我如何通过VBA代码看到Outlook对象已关闭



我使用以下代码使用 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"

相关内容

  • 没有找到相关文章

最新更新