Share via


Office アプリケーションを別のアプリケーションから制御する

オブジェクトを処理する Office アプリケーションのコードを別のアプリケーションで実行する場合は、次の手順を実行します。

コードを実行するには

  1. [ツール] の [参照設定] ダイアログ ボックスで他のアプリケーションのタイプ ライブラリへの参照を設定します。 次に、[オブジェクト ブラウザー] ウィンドウにオブジェクト、プロパティ、メソッドが表示され、コンパイル時に構文がチェックされます。 それらに関する状況依存のヘルプを取得することもできます。

  2. 他のアプリケーションのオブジェクトを特定の型として参照するオブジェクト変数を宣言します。 オブジェクトを提供するアプリケーションの名前を使って、正確に型を宣言します。 たとえば、次のステートメントでは、Microsoft Word 文書をポイントする変数と、Microsoft Excel ブックを参照する別の変数を宣言しています。

      Dim appWD As Word.Application, wbXL As Excel.Workbook
    

    メモ コードを早期バインドする場合は、前の手順に従う必要があります。

  3. 次の使用例に示すように、他のアプリケーションで処理するオブジェクトの OLE プログラム IDCreateObject 関数を使用します。 他のアプリケーションのセッションを見る場合は、Visible プロパティに True を設定します。

      Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWd.Visible = True
    
  4. 変数に含まれるオブジェクトにプロパティとメソッドを使用します。 たとえば、次の使用例は新しい Word 文書を作成します。

    Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWD.Documents.Add
    
  5. 他のアプリケーションでの操作が終了したら、次の例のように、Quit メソッドでアプリケーションを終了し、そのオブジェクト変数を Nothing に設定して、使用しているメモリを解放します。

    appWd.Quit 
    Set appWd = Nothing
    

提供されるサンプル コード:Bill Jelen、MrExcel.com 次のコード例では、スプレッドシート内のデータ行ごとに新しい Microsoft Office Word ファイルを作成します。

' You must pick Microsoft Word Object Library from Tools>References
' in the VB editor to execute Word commands.
Sub ControlWord()
    Dim appWD As Word.Application
    ' Create a new instance of Word and make it visible
    Set appWD = CreateObject("Word.Application.12")
    appWD.Visible = True

    ' Find the last row with data in the spreadsheet
    FinalRow = Range("A9999").End(xlUp).Row
    For i = 1 To FinalRow
        ' Copy the current row
        Worksheets("Sheet1").Rows(i).Copy
        ' Tell Word to create a new document
        appWD.Documents.Add
        ' Tell Word to paste the contents of the clipboard into the new document.
        appWD.Selection.Paste
        ' Save the new document with a sequential file name.
        appWD.ActiveDocument.SaveAs Filename:="File" & i
        ' Close the new Word document.
        appWD.ActiveDocument.Close
    Next i
    ' Close the Word application.
    appWD.Quit
End Sub

提供されるサンプル コード:Dennis Wallentin、VSTO & .NET & Excel この例では、3 つの値を含む名前付き範囲W_Dataのセル値を取得し、それらの値をWord ドキュメントに挿入します。 値は、ブックマークされた場所 td1td2、および td3 に挿入されます。 この例を実行するには、ブックの Sheet1 に、3 つの値がある名前付き範囲 W_Data が含まれている必要があります。 Word 文書 Test.docx が Excel ブックと同じ場所に保存され、Word 文書には 3 つのブックマーク td1td2td3 が作成されている必要があります。

' You must pick Microsoft Word Object Library from Tools>References
' in the Visual Basic editor to execute Word commands.

Option Explicit

Sub Add_Single_Values_Word()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRange1 As Word.Range
Dim wdRange2 As Word.Range
Dim wdRange3 As Word.Range

Dim wbBook As Workbook
Dim wsSheet As Worksheet

Dim vaData As Variant

Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Sheet1")

vaData = wsSheet.Range("W_Data").Value

' Instantiate the Word Objects.
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\Test.docx")

With wdDoc
    Set wdRange1 = .Bookmarks("td1").Range
    Set wdRange2 = .Bookmarks("td2").Range
    Set wdRange3 = .Bookmarks("td3").Range
End With

' Write values to the bookmarks.
wdRange1.Text = vaData(1, 1)
wdRange2.Text = vaData(2, 1)
wdRange3.Text = vaData(3, 1)

With wdDoc
    .Save
    .Close
End With

wdApp.Quit

' Release the objects from memory.
Set wdRange1 = Nothing
Set wdRange2 = Nothing
Set wdRange3 = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing

End Sub

投稿者について

MVP Bill Jelen は Microsoft Excel に関する書籍を 25 冊以上執筆しています。 Bill は Leo Laporte と共に TechTV の常連ゲストであり、MrExcel.com のホストでもあります。MrExcel.com には Excel に関する 300,000 件以上の質問と回答が掲載されています。

Dennis Wallentin は、Excel および Excel Services の .NET Framework ソリューションを重点的に扱うブログである VSTO & .NET & Excel の作者です。 Dennis は 20 年以上 Excel ソリューションを開発しており、また『Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA, and .NET (2nd Edition)』の共著者でもあります。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。