メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

現象

Automation を使用して Microsoft Wordを制御する Microsoft Visual Basic コードを実行すると、次のいずれかのエラー メッセージ

が表示されることがあります。 エラー メッセージ 1

実行時エラー '-2147023174' (800706ba)
オートメーション エラー

エラー メッセージ 2

実行時エラー '462': リモート サーバー コンピューターが存在しないか、使用できません

原因

Visual Basic では、Word オブジェクト変数で修飾せずに、Word オブジェクト、メソッド、またはプロパティを呼び出すコード行が原因で、Wordへの参照が確立されました。 Visual Basic では、プログラムを終了するまでこの参照はリリースされません。 この誤った参照は、コードが複数回実行されるときにオートメーション コードに干渉します。

解決方法

Word オブジェクト、メソッド、またはプロパティの各呼び出しが適切なオブジェクト変数で修飾されるようにコードを変更します。

状態

この動作は仕様です。

詳細情報

Wordを自動化するには、通常、Word Application オブジェクトまたは Document オブジェクトを参照するオブジェクト変数を確立します。 その後、他のオブジェクト変数を設定して、Word オブジェクト モデルの Selection、Range、またはその他のオブジェクトを参照できます。 Word オブジェクト、メソッド、またはプロパティを使用するコードを記述する場合は、常に呼び出しの前に適切なオブジェクト変数を指定する必要があります。 そうしない場合、Visual Basic では非表示のグローバル変数参照が使用され、現在実行中のインスタンスに設定されます。 Wordがシャットダウンされている場合、または宣言されたオブジェクト変数が解放された場合、非表示のグローバル変数は無効な (破棄された) オブジェクトを参照するようになりました。 オートメーション コードを再度実行すると、この非表示オブジェクト変数の呼び出しは前述のエラーで失敗します。


次の手順では、この問題を再現する方法と修正方法を示します。
 

現象の再現手順

  1. Visual Basic で新しい Standard EXE プロジェクトを開始します。 Form1 は既定で作成されます。

  2. [プロジェクト] メニューの [参照] をクリックし、次のいずれかのオプションをクリックします。

    • Office Word 2007 の場合は、[Microsoft Word 12.0 オブジェクト ライブラリ] をクリックします

    • Word 2003 の場合は、[Microsoft Word 11.0 オブジェクト ライブラリ] をクリックします

    • Word 2003 の場合は、[Microsoft Word 10.0 オブジェクト ライブラリ] をクリックします

    • Word 2000 の場合は、[Microsoft Word 9.0 オブジェクト ライブラリ] をクリックします。

    • Word 97 の場合は、[Microsoft Word 8.0 オブジェクト ライブラリ] をクリックします。

  3. Form1 に CommandButton を配置します。

  4. 次のコードを Form1 のコード ウィンドウにコピーします。

          Option Explicit
    
          Private Sub Command1_Click()
             Dim oWord As Word.Application
             Dim oDoc As Word.Document
             Dim oRange as Word.Range
    
             Set oWord = CreateObject("Word.Application")
             With oWord
                 .Visible = True
                 .Activate
                 .WindowState = wdWindowStateNormal
             End With
    
             Set oDoc = oWord.Documents.Add
             MsgBox "Document open", vbMsgBoxSetForeground
             With oDoc
                 .PageSetup.LeftMargin = InchesToPoints(1.25)
             End With
    
             ' This example inserts text at the end of section one.
             Set oRange = ActiveDocument.Sections(1).Range
             With oRange
                 .MoveEnd Unit:=wdCharacter, Count:= -1
                 .Collapse Direction:=wdCollapseEnd
                 .InsertParagraphAfter
                 .InsertAfter "End of section."
             End With
    
             With oDoc
                 .Saved = True
             End With
    
             Set oRange = Nothing
             Set oDoc = Nothing
             oWord.Quit
             Set oWord = Nothing
          End Sub
    
  5. [ 実行 ] メニューの [ スタート ] をクリックするか、F5 キーを押してプログラムを開始します。

  6. CommandButton をクリックします。 エラーは発生しません。 ただし、Wordへの参照は作成されており、リリースされていません。

  7. CommandButton をもう一度クリックし、前に説明したエラーが表示されることに注意してください。

    メモ このエラーは、コードが oWord オブジェクト変数で呼び出しの前に存在せずに InchesToPoints メソッドを参照しているために発生します。

  8. プロジェクトを停止し、次の行を変更します。

    .PageSetup.LeftMargin = InchesToPoints(1.25)
    

    -宛先-

     

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    
  9. プログラムをもう一度実行します。 次に、CommandButton をクリックします。 エラーは発生しません。

  10. もう一度 CommandButton をクリックすると、エラーが表示されることに注意してください。

    メモ このエラーは、oWord オブジェクト変数を使用して呼び出しの前に置かなくても、コードが ActiveDocument セクション 1 の Range オブジェクトを参照しているために発生します。

  11. プロジェクトを停止し、次の行を変更します。

    Set oRange = ActiveDocument.Sections(1).Range
    

    -宛先-
     

    Set oRange = oWord.ActiveDocument.Sections(1).Range
    
  12. プログラムをもう一度実行します。 エラーなしでコードを複数回実行できることに注意してください。

Wordを自動化する Visual Basic プロジェクトをビルドするときに、プロジェクトに Microsoft Word オブジェクト ライブラリへの参照がある場合は、Word オブジェクト モデルのオブジェクト、メソッド、プロパティのサンプル コードをWordヘルプ ファイルから入手できます。 カーソルがコード内のキーワードの上にある場合は、F1 キーを押すと、該当するヘルプ テキストが表示されます。


ヘルプ トピックのサンプル コードは、Microsoft Word Visual Basic for Applications コードです。 Visual Basic コードで必要なオブジェクト参照は表示されません。 必要に応じて修飾子を追加する必要があります。

関連情報

詳細については、Microsoft サポート技術情報の次の記事を参照してください。

178510 PRB: オブジェクト '_Global'Failed の Excel Automation メソッド

Office アプリケーションの自動化の詳細については、以下の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

オブジェクト モデルWord概要

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×