VBA Lotus Notes - 弹出新的电子邮件窗口

时间:2014-06-16 22:35:01

标签: vba email excel-vba lotus-notes email-integration

我的任务是一个非常简单的目标。使用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

End Sub

2 个答案:

答案 0 :(得分:3)

通过"在幕后",我认为你的意思是你正在使用Notes"后端课程"。如果你想在客户端中实际打开一个窗口,你必须使用"前端"类。

要理解的一个重要区别是"前端"类被公开为OLE对象(Notes.NotesUIWorkspace),以及"后端"类作为OLE(Notes.NotesSession)和COM(Lotus.NotesSession)对象公开。请注意不同的前缀:'注意'对于OLE类,' Lotus'用于COM类。

NotesUIWorspace类和您可以通过它驱动的其他前端类都是关于自动化Notes客户端的实际操作。您可以找到NotesUIWorkspace类here的文档。使用OLE类时,Notes客户端将自动启动,除非它已在运行。使用COM类时,Notes客户端不需要运行,也不会自动启动。

答案 1 :(得分:0)

第一步是保存您的文档而不是致电Send,即如果Call doc.Save( True, True )是您的doc课程,请致电NotesDocument

第二步是使用CreateObject("Notes.NotesUIWorkspace").EDITDOCUMENT True, doc

显示文档

作为旁注:显示您的代码实际上有助于回答问题!