ファイル名と最終更新日時の一覧を作成するマクロをご紹介しました。
このマクロは、すべてのファイルのファイル名と最終更新日時一覧を作成するものでしたが、実務では限定された一部のファイルについて、もう少し情報が欲しいということもあります。
例えば、たくさんのWordファイルがあるときに、ファイルサイズ・ページ数・文字数といった情報を一覧で欲しいということもあります。
たくさんのWordファイルを納品するような場合や、大量のWordファイルを受け取って処理しなければいけないようなときです。
その参考となりそうなマクロをご紹介しておきましょう。
Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If dlg.Show = 0 Then Exit Sub
Dim fol_path As String
fol_path = dlg.SelectedItems(1)
Dim f_name As String
f_name = Dir(fol_path & "\*.doc*")
If f_name = "" Then MsgBox "Wordファイルが存在しません。": Exit Sub
Worksheets.Add Before:=Worksheets(1)
Range("A1").Value = fol_path
Range("A2").Value = "のWordファイル一覧"
Range("A4").Value = "ファイル名"
Range("B4").Value = "最終更新日時"
Range("C4").Value = "ファイルサイズ(KB)"
Range("D4").Value = "ページ数"
Range("E4").Value = "文字数"
'A5セルから下にファイル名とプロパティの書き出し
Dim i As Long: i = 5
With CreateObject("Word.Application")
Do Until f_name = ""
With .Documents.Open(fol_path & "\" & f_name, ReadOnly:=True)
.Repaginate '正しいページ数取得のためにRepagenate
Cells(i, "A").Value = f_name 'ファイル名
Cells(i, "B").Value = str(.BuiltinDocumentProperties(12)) '最終更新日時
Cells(i, "C").Value = Int(.BuiltinDocumentProperties(22) / 1024) 'サイズ
Cells(i, "D").Value = .BuiltinDocumentProperties(14) 'ページ数
Cells(i, "E").Value = .BuiltinDocumentProperties(16) '文字数
.Close SaveChanges:=False
End With '.Documents.Open
f_name = Dir '次のファイル名を取得
i = i + 1
Loop
End With '.CreateObject("Word.Application")
MsgBox Worksheets(1).Name & "にWordファイルの一覧を作成しました。"
End Sub
全体の構造としては、先日のすべてのファイルの名前と最終更新日時を一覧にするマクロと基本的に同じです。
前半部分で異なるのは、Wordファイルだけを対象とするために、Dir関数の引数を拡張子を「.doc*」と限定していることです。
f_name = Dir(fp & "\*.doc*")
後半の、プロパティを取得して書き出す部分が、先日のマクロとはかなり異なります。
まずWordをCreateObjectオブジェクトしておいて
With CreateObject("Word.Application")
Do Until~Loop文の中でWordファイルを開き
With .Documents.Open(fol_path & "\" & f_name, ReadOnly:=True)
正しいページ数を取得するためにRepaginateしておいてから
.Repaginate
ファイル名、最終更新日時、サイズ、ページ数、文字数を書き出し
Cells(i, "A").Value = f_name Cells(i, "B").Value = str(.BuiltinDocumentProperties(12)) Cells(i, "C").Value = Int(.BuiltinDocumentProperties(22) / 1024) Cells(i, "D").Value = .BuiltinDocumentProperties(14) Cells(i, "E").Value = .BuiltinDocumentProperties(16)
ファイルを閉じています。
.Close SaveChanges:=False
ここでは一覧にする要望の多そうな、ファイル名、最終更新日時、サイズ、ページ数、文字数を取得すなるマクロをご紹介していますが、BuiltinDocumentPropertiesプロパティに他の引数を指定してやれば、もちろん他の値も取得できます。
最終更新日時:2020-03-03 20:08
- Newer:単語と単語の個数一覧をExcelに出力するWordマクロ
- Older:エクセルとワードのマクロを比べながらでわかりすく
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Wordファイルのプロパティを一覧にするExcelマクロ