「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の使い方 » Office連携 » 開いているWordファイルのファイル名一覧を作るExcelマクロ