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

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

対象:Excel2003, Excel2007, Excel2010

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

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

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

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

[スポンサードリンク]

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


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

Sub フォルダを指定してWordファイルのプロパティ一覧を作成する()
'先頭にシートを挿入して
'指定したフォルダのWordのファイル名とプロパティの一覧を作成する

 Dim fld As FileDialog
 Dim fp As String
 Dim f As String
 Dim i As Long
 Dim wrd As Object
 Dim doc As Object

 'フォルダを指定するダイアログを表示
 Set fld = Application.FileDialog(msoFileDialogFolderPicker)
 'キャンセル時にマクロ終了
 If fld.Show = 0 Then Exit Sub
 '指定されたフォルダのフルパスを変数に格納
 fp = fld.SelectedItems(1)
 '指定されたフォルダの一つ目のWordファイル名を取得
 f = Dir(fp & "\*.doc*")
 If f = "" Then MsgBox "Wordファイルが存在しません。": Exit Sub

 'ワークシートを先頭に挿入
 Worksheets.Add Before:=Worksheets(1)
 '見出しの書き出し
 Range("A1").Value = fp
 Range("A2").Value = "のWordファイル一覧"
 Range("A4").Value = "ファイル名"
 Range("B4").Value = "最終更新日時"
 Range("C4").Value = "ファイルサイズ(KB)"
 Range("D4").Value = "ページ数"
 Range("E4").Value = "文字数"

 Set wrd = CreateObject("Word.Application")
 'A5セルから下にファイル名とプロパティの書き出し
 i = 5
 Do While f <> ""
  Set doc = wrd.Documents.Open(fp & "\" & f, ReadOnly:=True)
  With doc
   '正しいページ数取得のためにRepagenate
   .Repaginate
   'ファイル名
   Cells(i, 1).Value = f
   '最終更新日時
   Cells(i, 2).Value = str(.BuiltinDocumentProperties(12))
   'ファイルサイズ
   Cells(i, 3).Value = Int(.BuiltinDocumentProperties(22) / 1024)
   'ページ数
   Cells(i, 4).Value = .BuiltinDocumentProperties(14)
   '文字数
   Cells(i, 5).Value = .BuiltinDocumentProperties(16)
   'Wordファイルを閉じる
   .Close SaveChanges:=False
  End With
  Set doc = Nothing
  '次のファイル名を取得
  f = Dir()
  i = i + 1
 Loop

 Set wrd = Nothing
 Range("A4").CurrentRegion.Columns.AutoFit
 MsgBox Worksheets(1).Name & "にWordファイルの一覧を作成しました。"

End Sub

マクロ全体の構造としては、先日のすべてのファイルの名前と最終更新日時を一覧にするマクロと基本的に同じです。

前半部分で異なるのは、Wordファイルだけを対象とするために、Dir関数の引数を拡張子を「.doc*」と限定していることです。
 f = Dir(fp & "\*.doc*")

後半の、プロパティを取得して書き出す部分が、先日のマクロとはかなり異なります。

まずWordをCreateObjectオブジェクトしておいて
 Set wrd = CreateObject("Word.Application")

Do While ~ Loop文の中でWordファイルを開き
  Set doc = wrd.Documents.Open(fp & "\" & f, ReadOnly:=True)

正しいページ数を取得するためにRepaginateしておいてから
   .Repaginate

ファイル名、最終更新日時、サイズ、ページ数、文字数を書き出し
   Cells(i, 1).Value = f
   Cells(i, 2).Value = str(.BuiltinDocumentProperties(12))
   Cells(i, 3).Value = Int(.BuiltinDocumentProperties(22) / 1024)
   Cells(i, 4).Value = .BuiltinDocumentProperties(14)
   Cells(i, 5).Value = .BuiltinDocumentProperties(16)

ファイルを閉じています。
   .Close SaveChanges:=False

ここでは一覧にする要望の多そうな、ファイル名、最終更新日時、サイズ、ページ数、文字数を取得すなるマクロをご紹介していますが、BuiltinDocumentPropertiesプロパティに他の引数を指定してやれば、もちろん他の値も取得できます。

関連語句
VBA, Visual Basic for Applications
[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

「Office連携」の記事一覧

検索


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

.