Outlook 2003 で [電子メールの編集に Microsoft Word 2003 を使用する] の設定が有効な場合、Application_ItemSend イベントで Item.Move メソッドを実行するとエラーが発生する

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

現象
Microsoft Office Outlook 2003 で [電子メールの編集に Microsoft Office Word 2003 を使用する] の設定が有効な場合に、Application_ItemSend イベントで Item.Move メソッドを実行するとエラーが発生します。

Application_ItemSend イベントで送信するアイテムに対して Move および Close メソッドの実行は推奨されませんが、通常、Item.Move メソッドを実行した段階で、表示中の該当するアイテムのウィンドウは閉じられます。しかし、Word メールを利用している場合、以下の現象が発生します。

  • Move メソッドはエラーを返し、以下のエラーメッセージが表示されます。

    実行時エラー '287':
    アプリケーション定義またはオブジェクトの定義エラーです。
  • Move メソッドで指定したフォルダにアイテムのコピーが作成されます。
  • メール アイテムのウィンドウが表示されたままになります。
また、エラー発生後に表示されているメール アイテムのウィンドウを使用して操作を継続した場合、再度実行される Application_ItemSend イベントで Item に対する処理等が適切に行えない場合があります。エラー発生後に表示されているメール アイテムのウィンドウは閉じることを推奨します。
原因
この現象は、Word によるメール編集が有効な場合に、製品の実装上の問題のために発生します。
回避策
この現象を回避するには、以下のいずれかの方法を実行してください。

方法 1 :
Outlook 2003 の [オプション] をクリックし、[メール形式] をクリックして、[電子メールの編集に Microsoft Word 2003 を使用する] をオフにして設定を無効にする。

方法 2 :
Application_ItemSend イベントで Item.Move メソッドは利用せずに、他の手法を検討する。

補足 : Application_ItemSend イベントで送信をキャンセルして、Item.Move メソッドを利用したい場合、以下のような実装でメール アイテムのウィンドウを閉じることができます。 

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)        Dim myNameSpace As NameSpace    Dim myInbox As MAPIFolder    Dim myDestFolder As MAPIFolder        Set myNameSpace = Application.GetNamespace("MAPI")    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)    Set myDestFolder = myInbox.Folders("Test")    Item.Save    Cancel = True    'Word がエディタとして使われているかを確認    If Item.GetInspector.EditorType = olEditorWord Then         'Word がエディタとなっている場合は、エラー トラップを有効にして Move メソッドを実行する        On Error Resume Next        Item.Move myDestFolder        'Word がホストしているドキュメント アイテムの数に応じて、適切な Word の終了処理を実行する        If Item.GetInspector.WordEditor.Application.documents.Count = 1 Then            'ホストしているアイテムが一つの場合は、Word を終了            Item.GetInspector.WordEditor.Application.Quit False        Else            '複数のアイテムをホストしている場合は、該当アイテムのみを閉じる            Item.GetInspector.WordEditor.Close        End If    Else        'Word がエディタとなっていない場合は、Move メソッドだけを実行する        Item.Move myDestFolder    End IfEnd Sub
状況
マイクロソフトでは、この問題について現在調査中です。詳細については、わかりしだいこの資料に掲載する予定です。
詳細

問題の再現手順

  1. Outlook 2003 を起動します。
  2. [オプション] をクリックし、[メール形式] をクリックして、[電子メールの編集に Microsoft Word 2003 を使用する] にチェックをオンにします。
  3. 以下のマクロを記述します。

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)        Dim myNameSpace As NameSpace    Dim myInbox As MAPIFolder    Dim myDestFolder As MAPIFolder        Set myNameSpace = Application.GetNamespace("MAPI")    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)    Set myDestFolder = myInbox.Folders("Test")    Cancel = True    Item.Move myDestFolderEnd Sub
  4. [受信トレイ] 配下に "Test" という名前のフォルダを作成します。
  5. 新規メールを作成し、任意の宛先を入力します。
  6. [送信] ボタンをクリックします。

結果

Item.Move メソッドで以下のエラー メッセージが表示されます。

実行時エラー '287':
アプリケーション定義またはオブジェクトの定義エラーです。

また、このエラー メッセージに対して、[終了] をクリックすると、以下のエラー メッセージが表示されます。

Microsoft Office Word
オブジェクトが削除されているため、操作を実行できません。

なお、上記再現手順の場合、メール アイテムは [送信トレイ] から [Test] フォルダに移動しますが、メール アイテムの画面は表示されたままになります。また、表示されている画面で、再度、[送信] ボタンをクリックすると、以下のエラー メッセージが表示されます。

実行時エラー: -2147219840 (80040680)
元のアイテムを削除できなかったため、移動する代わりにそのアイテムをコピーしました。 アイテムを削除できませんでした。アイテムが移動または削除されたか、アクセスが拒否されました。
プロパティ

文書番号:2476657 - 最終更新日: 10/04/2016 14:57:00 - リビジョン: 4.0

Microsoft Office Outlook 2003, Microsoft Office Word 2003

  • kbharmony kbexpertiseinter kbtshoot kbbug kberrmsg KB2476657
フィードバック