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

現象

Automation を使用して Microsoft Excel を制御するコードを実行しているときに、次のいずれかのエラーが発生する可能性があります。

Microsoft Excel 97 以降のバージョンの Excel では、次のいずれかのエラー メッセージが表示されます。

エラー メッセージ 1

実行時エラー '1004':
オブジェクト '_Global' のメソッド '>' のメソッド '<名' が失敗しました

エラー メッセージ 2

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

Microsoft Excel 95 では、次のいずれかのエラー メッセージが表示されます。

エラー メッセージ 1

実行時エラー '-2147023174'
OLE オートメーション エラー

エラー メッセージ 2

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

原因

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

解決方法

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

状態

この動作は仕様です。

詳細情報

Microsoft Excel を自動化するには、通常、Excel Application オブジェクトまたは Excel Workbook オブジェクトを参照するオブジェクト変数を確立します。 その後、他のオブジェクト変数を設定して、Microsoft Excel オブジェクト モデルの Worksheet、Range、またはその他のオブジェクトを参照できます。 Excel オブジェクト、メソッド、またはプロパティを使用するコードを記述する場合は、常に呼び出しの前に適切なオブジェクト変数を指定する必要があります。 そうでない場合は、Visual Basic によって Excel への独自の参照が確立されます。 この参照により、オートメーション コードを複数回実行しようとすると問題が発生する可能性があります。 コード行がオブジェクト変数で始まる場合でも、オブジェクト変数の前にないコード行の途中にある Excel オブジェクト、メソッド、またはプロパティを呼び出す場合があることに注意してください。

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

動作を再現する手順

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

  2. [プロジェクト] メニューの [参照] をクリックし、自動化する Excel のバージョンのオブジェクト ライブラリをチェックします。

  3. Form1 に CommandButton コントロールを配置します。

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

          Option Explicit
    
          Private Sub Command1_Click()
             Dim xlApp As Excel.Application
             Dim xlBook As Excel.Workbook
             Dim xlSheet As Excel.Worksheet
             Set xlApp = CreateObject("Excel.Application")
             Set xlBook = xlApp.Workbooks.Add
             Set xlSheet = xlBook.Worksheets("Sheet1")
             xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
             xlBook.Saved = True
             Set xlSheet = Nothing
             Set xlBook = Nothing
             xlApp.Quit
             Set xlApp = Nothing
          End Sub
    
  5. [ 実行 ] メニューの [ スタート] をクリックするか、F5 キーを押してプログラムを開始します。

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

  7. CommandButton コントロールをもう一度クリックします。 「現象」セクションで説明されているエラー メッセージのいずれかが表示されます。

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

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

    xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
    

    コード行を次のコード行のように変更します。

    xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
    
  9. プログラムをもう一度実行します。 エラー メッセージを受け取らずにコードを複数回実行できることに注意してください。

関連情報

189618 Automation を使用して制御する Visual Basic コードを実行すると、"実行時エラー '-2147023174' (800706ba)" エラー メッセージまたは "ランタイム エラー '462' が表示される場合がありますWord
 

ヘルプを表示

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

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

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

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

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

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

×