我使用以下代码使用 Outlook 编辑主题和正文文本:
Sub SetupEmailTexts()
Dim olApp As Object
Dim olNameSpace As Object 'Outlook.NameSpace
Dim MailFolder As Object 'Outlook.MAPIFolder
Dim MyMail As Object 'Outlook.MailItem
GetSetup
Set olApp = CreateObject("Outlook.Application")
Set olNameSpace = olApp.GetNamespace("MAPI")
Set MailFolder = olNameSpace.GetDefaultFolder(16)
Set MyMail = MailFolder.Items.Add
MyMail.Display
MyMail.Subject = SubjectString
MyMail.HTMLBody = BodyString
MsgBox ("Edit subject and body before pressing OK")
If Not IsNull(MyMail) Then
PutSubjectBody MyMail.Subject, MyMail.HTMLBody
MyMail.Close olDiscard
End If
End Sub
如果我在代码生成的消息框中按确定之前关闭 outlook,则在"PutSubjectBody MyMail.Subject, MyMail.HTMLBody"行中收到运行时错误"远程服务器计算机不存在或不可用"。如您所见,我尝试使用IsNull来确定MyMail是否仍然"活着"。我可以用什么代替"IsNull"?
我会使用 On Error
,检测该特定Err.Number
并优雅地处理它。
自动化对象的闭包不会反映在MyMail
变量本身的状态中,它需要实现一个IsConnectedToInstance
属性,但它不需要。
您可以Outlook.Application.Quit
连接事件,但随后您需要检查一个标志,并且在某些情况下会错过它。
您可以尝试使用错误处理 -
在子项的开头添加行
On Error goto err
在子的末尾添加:
NoError:
exit sub
err:
msgbox "you closed outlook. couldn't do my thing"