この記事では、ExcelのマクロからWordのマクロを実行する方法についてご説明します。
【動画】ExcelのマクロからWordのマクロを実行する実際の動き
本題に入る前に、まずは次のツイートをご覧ください。
Excelファイルのマクロから、Wordファイルのマクロを呼び出す処理を作ってみました😀
動画では「A.xlsm」から、別のフォルダに置いてある「B.docm」ファイルのマクロを呼び出しています😊
処理は、「A.xlsm」の表のデータを「B.docm」に渡してWordに貼り付けています😄#Excel#Word#VBA#マクロ pic.twitter.com/HUpWXqb4SY
— まさ@Excel、VBA、マクロ(経験年数16年) (@masamasa9785) March 23, 2021
ツイートの動画では、Excelのマクロ(ファイル「A.xlsm」のマクロ)から、Wordのマクロ(ファイル「B.docs」のマクロ)を実行しています。
ExcelのマクロからWordのマクロを実行する方法
ExcelのマクロからWordのマクロを実行するには、次の流れの通りにコードを書いていきます。
Runメソッドには、引数に「Step1で取得したWordのファイル名」と「Wordのマクロに渡したい引数(※省略可)」を指定して実行します。
コードの例
呼び出し側のExcel(A.xlsm)のマクロのコード(例)
Dim wdMacro As String Dim wdApp As Word.Application Dim wdDoc As Word.Document Dim rng As Range Dim getVal As Variant 'Wordのファイル Const wdFile As String = "C:\work\B.docm" 'Wordのマクロ名を取得する wdMacro = "func_main" 'セルのデータをRangeオブジェクトに取得する Set rng = Range("A9:G18") 'Rangeオブジェクトの中身を配列に格納する getVal = rng 'Documentオブジェクトからインスタンスを生成する Set wdDoc = GetObject(wdFile, "Word.Document") 'Applicationオブジェクトからインスタンスを生成する Set wdApp = GetObject(, "word.Application") 'wordファイルをアクティブにする wdDoc.Activate 'Wordのマクロを呼び出す wdApp.Run wdMacro, getVal 'wordファイル終了処理 wdApp.ActiveDocument.Close SaveChanges:=False wdApp.Quit Set wdApp = Nothing Set wdDoc = Nothing
コードの解説
まずは29行目を見てください。
29行目のRunメソッドで、Wordファイルのマクロ(ファイル「B.docs」のマクロ)を呼び出しています。
Runメソッドには、第1引数にWordのマクロ名を、第2引数にマクロに渡したい引数(※省略可)を指定します。
ちなみに、Wordファイル名は8行目で、実行したいWordファイルのマクロ名は11行目で取得しています。
Wordのマクロのコードも見てみましょう
Wordのマクロのコードについてもご説明します。
Word(B.docm)のマクロのコード(例)
Sub func_main(ByRef getVal() As Variant) Dim i As Integer, j As Integer '表の処理 With ActiveDocument.Bookmarks("\Page").Range.Tables If .Count = 0 Then Exit Sub '表にデータを書き込む For i = 1 To UBound(getVal, 1) For j = 1 To UBound(getVal, 2) .Item(1).Cell((i), (j)).Select Selection.TypeText Text:=getVal(i, j) Next Next End With 'ファイルを保存する ActiveDocument.Save End Sub
コードの解説
まずは1行目を見てください。
マクロfunc_mainの引数getValに、ファイル「A.xlsm」から受け取ったデータが格納されています。
引数getValにはファイル「A.xlsm」のセルの値が格納されているので、10行目から15行目のループ処理の中でこの引数getValの値を取り出してWordの表に貼り付けています。(13行目)
最後に
本記事では、ExcelのマクロからWordのマクロを実行する方法についてご説明しました。
Wordのマクロを呼び出すには、Runメソッドの引数に「Wordのファイル名」と「Wordのマクロに渡したい引数(※省略可)」を指定して実行します。
コードの書き方は少し癖がありますが、先ほどお話したExcelのマクロのコードを参考にしていただければと思います。
コードの書き方は特に難しくはないので、是非参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。