Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Wordファイルのプロパティを一覧にするExcelマクロ

Wordファイルのプロパティを一覧にするExcelマクロ

対象:Excel2003, Excel2007, Excel2010

ファイル名と最終更新日時の一覧を作成するマクロをご紹介しました。

このマクロは、すべてのファイルのファイル名と最終更新日時一覧を作成するものでしたが、実務では限定された一部のファイルについて、もう少し情報が欲しいということもあります。

例えば、たくさんのWordファイルがあるときに、ファイルサイズ・ページ数・文字数といった情報を一覧で欲しいということもあります。

たくさんのWordファイルを納品するような場合や、大量のWordファイルを受け取って処理しなければいけないようなときです。

[スポンサードリンク]

その参考となりそうなマクロをご紹介しておきましょう。

Sub フォルダを選択して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")

 Range("A4").CurrentRegion.Columns.AutoFit
 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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Wordファイルのプロパティを一覧にするExcelマクロ

「Office連携」の記事一覧

検索


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

.