我的任务是一个非常简单的目标 . 使用VBA在Lotus Notes中打开一个新的电子邮件窗口,但请继续阅读完全理解我的问题 . 目前,我已经开发了vba代码,可以在Lotus Notes中创建一个新的电子邮件,并用各种信息填充它,例如收件人,主题,正文和附件;然后最终将电子邮件发送给收件人 . 一切都完美无瑕 . 唯一的问题是它在幕后做了所有这些,如果不是与收件人核对,我不知道发送的电子邮件 . 为了解决这个问题,我希望vba代码在心理上弹出一个新的电子邮件窗口,其中包含所有相同的信息,但强迫我手动发送电子邮件(通过点击发送按钮) . 这样我知道电子邮件将被发送,所以我可以根据需要添加额外的信息 .
我看过的线程比我能算的多,而且似乎都解决了一个与我不同的问题 . 任何有关正确方向的建议或提示都将受到赞赏 .
谢谢!
谢谢你的建议 . 继承我的代码:
Sub Prepare_email()
Dim Maildb As Object
Dim MailDoc As Object
Dim Body As Object
Dim Session As Object
Dim Subject As String
'Start a session to notes
Set Session = CreateObject("Lotus.NotesSession")
'This line prompts for password of current ID noted in Notes.INI
Call Session.Initialize
'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
Else
Call Maildb.Open
End If
'Create the mail document
Set MailDoc = Maildb.CREATEDOCUMENT
Call MailDoc.ReplaceItemValue("Form", "Memo")
'Set the recipient, calls a GetPrimary Email function
Call MailDoc.ReplaceItemValue("SendTo", GetPrimaryEmail)
'Set subject, calls subject function
Subject = getCompanyName
Call MailDoc.ReplaceItemValue("Subject", Subject)
'Create and set the Body content
Set Body = MailDoc.CREATERICHTEXTITEM("Body")
Call Body.APPENDTEXT("BODY Content")
'Example to save the message
MailDoc.SAVEMESSAGEONSEND = True
'Send the document
Call MailDoc.ReplaceItemValue("PostedDate", Now())
Call MailDoc.SEND(False)
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set Body = Nothing
Set Session = Nothing
结束子
2 回答
通过“幕后”,我认为你的意思是你正在使用Notes“后端类” . 如果要在客户端中实际打开一个窗口,则必须使用“前端”类 .
要理解的一个重要区别是“前端”类是作为OLE对象公开的(Notes.NotesUIWorkspace),而“后端”类是作为OLE(Notes.NotesSession)和COM(Lotus.NotesSession)公开的 . 对象 . 注意不同的前缀:OLE类的'Notes',COM类的'Lotus' .
NotesUIWorspace类和您可以通过它驱动的其他前端类都是关于自动化Notes客户端的实际操作 . 您可以找到NotesUIWorkspace类here的文档 . 使用OLE类时,Notes客户端将自动启动,除非它已在运行 . 使用COM类时,Notes客户端不需要运行,也不会自动启动 .
第一步涉及保存文档而不是调用
Send
,即如果doc
是NotesDocument
类,则调用Call doc.Save( True, True )
.第二步是使用
CreateObject("Notes.NotesUIWorkspace").EDITDOCUMENT True, doc
显示文档作为旁注:显示您的代码实际上有助于回答这个问题!