2016-02-05 57 views
1

使用Outlook使用下面的代碼編輯主題和正文:我通過VBA代碼如何查看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 

如果我在所生產的消息框,按確定前關閉前景代碼,我收到「PutSubjectBody MyMail.Subject,MyMail.HTMLBody」行中的運行時錯誤「遠程服務器機器不存在或不可用」。 正如您所看到的,我試圖使用IsNull來確定MyMail仍然「活着」或沒有。 我可以用什麼來代替「IsNull」?

回答

1

在這種情況下,我會使用On Error,檢測特定的Err.Number並妥善處理它。

自動化對象的關閉不會反映在MyMail變量本身的狀態中,它需要實現IsConnectedToInstance屬性,而不是。

你可以連接事件Outlook.Application.Quit,但是你需要檢查一個標誌,並且會有錯誤的情況。

+0

因爲! 我並不這麼想。 謝謝 – Ebbe

0

你可以嘗試使用錯誤處理 -

添加一行在副年初

On Error goto err 

加上子的末尾:

NoError: 
    exit sub 

err: 
    msgbox "you closed outlook. couldn't do my thing" 
+0

也謝謝你! – Ebbe