Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » 開いているWordファイルのファイル名一覧を作るExcelマクロ

開いているWordファイルのファイル名一覧を作るExcelマクロ

対象:Excel2007, Excel2010, Excel2013

「excel マクロ 開いているwordの名前取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Wordで資料を作成する際、作成したWordファイルの数が増えてくると、そのWordファイルの一覧が必要になることがあります。

そんなときに使えるExcelマクロを探していた方による検索でしょうか。

[スポンサードリンク]

開いているWordファイル名の一覧を作成するサンプルマクロ

以下のようなマクロで、Excelブックの先頭にワークシートを挿入して、開かれているWordファイルのファイル名一覧をA列に作成することができます。

Sub 開いているWord文書のファイル名一覧を作成する()

 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

End Sub

サンプルマクロの解説

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ファイルが開かれていません。"
といったエラートラップを入れています。

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » 開いているWordファイルのファイル名一覧を作るExcelマクロ

「Office連携」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.