「excel マクロ 開いているwordの名前取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Wordで資料を作成する際、作成したWordファイルの数が増えてくると、そのWordファイルの一覧が必要になることがあります。
そんなときに使えるExcelマクロを探していた方による検索でしょうか。
開いているWordファイル名の一覧を作成するサンプルマクロ
以下のようなマクロで、Excelブックの先頭にワークシートを挿入して、開かれているWordファイルのファイル名一覧をA列に作成することができます。
 Dim wd_app As Object ' Word.Application
 Dim i As Long
 On Error GoTo ERR_HNDL
 Set wd_app = GetObject(Class:="Word.Application")
 Sheets.Add Before:=Sheets(1)
 For i = 1 To wd_app.Documents.Count
  Cells(i, "A").Value = wd_app.Documents(i).Name
 Next i
GoTo END_TASK
ERR_HNDL:
 MsgBox "Wordファイルが開かれていません。"
END_TASK:
 Set wd_app = Nothing
サンプルマクロの解説
GetObject関数を使って開かれているWordへの参照を取得して、
 Set wd_app = GetObject(Class:="Word.Application")
Excelブックの先頭にワークシートを挿入して、
 Sheets.Add Before:=Sheets(1)
開かれているWordファイルの文書の数だけFor~Nextループを回して、
 For i = 1 To wd_app.Documents.Count
先ほど挿入したワークシートのA列に、Wordファイル名を書き出しています。
  Cells(i, "A").Value = wd_app.Documents(i).Name
カウンター変数を使ってWordのファイル名一覧を取得するWordマクロのFor~Nextループで「Documents.Count」「Documents(i).Name」というオブジェクト式を使っています。今回のマクロの、
 For i = 1 To wd_app.Documents.Count
の「.Documents.Count」や、
  Cells(i, "A").Value = wd_app.Documents(i).Name
の右辺「.Documents(i).Name」はこれと同じです。
もちろん、オブジェクト変数を使ったFor Each~Next文でも書くことができますが、Excelのワークシート上に書き出す処理を含んでいるため、コードが短くなるFor~Next文を使いました。
Wordが起動していない状態で、
  Set wd_app = GetObject(Class:="Word.Application")
を実行するとエラーとなってしまいますので、
  On Error GoTo ERR_HNDL
  Set wd_app = GetObject(Class:="Word.Application")
 ERR_HNDL:
  MsgBox "Wordファイルが開かれていません。"
といったエラートラップを入れています。
- Newer:Word VBAですべてのブックマークを削除する
 - Older:少人数制で質問等聞きやすかった
 
Home » エクセルマクロ・Excel VBAの使い方 » Word連携 » 開いているWordファイルのファイル名一覧を作るExcelマクロ
『インストラクターのネタ帳』では、2003年10月からMicrosoft Officeの使い方などを紹介し続けています。










