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

エラー処理を試すことができます-

サブ行の先頭に行を追加します

On Error goto err

サブの最後に追加:

NoError:
  exit sub

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