1

我使用 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

如果在代码生成的消息框中按 OK 之前关闭 Outlook,我会在“PutSubjectBody MyMail.Subject,MyMail.HTMLBody”行中收到运行时错误“远程服务器计算机不存在或不可用”。如您所见,我尝试使用 IsNull 来确定 MyMail 是否仍然“活着”。我可以用什么来代替“IsNull”?

4

2 回答 2

1

在这种情况下,我会使用On Error, 检测特定的Err.Number并优雅地处理它。

自动化对象的关闭不会反映在MyMail变量本身的状态中,它需要实现一个IsConnectedToInstance属性,而它不需要。

您可以连接事件Outlook.Application.Quit,但随后您需要检查一个标志,并且会出现错过它的情况。

于 2016-02-05T12:29:16.570 回答
0

您可以尝试使用错误处理 -

在 sub 的开头添加该行

On Error goto err

在子的末尾添加:

NoError:
  exit sub

err:
    msgbox "you closed outlook. couldn't do my thing"
于 2016-02-05T12:26:48.150 回答