- 静岡県立大学渡邉研究室
- 6月, 12, 2012
- おしらせ
- フォルダ、サブフォルダ内のWordのプロパティ情報を一括抽出する はコメントを受け付けていません
必要に迫られたのでEcxelのマクロ(WordPropという名前)を書きました。Excelファイルの保存されているフォルダ内の、全てのWordファイルについて、フォルダの階層をたどってプロパティ情報を一括で抽出します。
作成にあたり、「情報系大学にいる人の備忘録」http://d.hatena.ne.jp/the-otakky/さんと、「T’sWare」http://www.tsware.jp/tips/tips_478.htmさんの記事を参考にしました。ありがとうございます。
100人以上の学生から、レポートをファイルで集めるような場合に重宝します。いちいちWordの起動と終了が繰り返されるので時間は掛かりますが、手作業よりはよほどマシです。
同時に印刷もしたい場合は、コメントを外してください。
Sub WordProp() Dim msg As String Dim filePath As String filePath = Application.ActiveWorkbook.path msg = "「" + filePath + "」以下に保存されているWordファイルからプロパティ情報を抽出します。" MsgBox msg Application.ScreenUpdating = False Worksheets("Sheet1").Select Range("A1:IV65536").Clear Range("A1").Value = "パス" Range("B1").Value = "ファイル名" Range("C1").Value = "作成者" Range("D1").Value = "リビジョン" Range("E1").Value = "作成日時" Range("F1").Value = "前回保存日時" Range("G1").Value = "総編集時間" Range("H1").Value = "ページ数" Range("I1").Value = "文字数" Range("J1").Value = "行数" Range("K1").Value = "段落数" Range("L1").Value = "バイト数" SearchDoc filePath, 2 End Sub Function SearchDoc(path As String, row As Integer) As Integer Dim fso As Object Dim folder As Object Dim subfolder As Object Dim file As Object Dim ext As String Dim wordApp As Object Dim wordDoc As Object Dim waitTime As Variant Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(path) For Each subfolder In folder.SubFolders row = SearchDoc(subfolder.path, row) Next subfolder Set wordApp = CreateObject("word.application") wordApp.Visible = True For Each file In folder.Files ext = LCase(fso.GetExtensionName(file.Name)) If ext = "doc" Or ext = "docx" Then Set wordDoc = wordApp.Documents.Open(file.path, ReadOnly:=True) wordDoc.Repaginate Range("A" & row).Value = path Range("B" & row).Value = file.Name Range("C" & row).Value = wordDoc.BuiltinDocumentProperties("Author") Range("D" & row).Value = wordDoc.BuiltinDocumentProperties("Revision number") Range("E" & row).Value = Str(wordDoc.BuiltinDocumentProperties("Creation date")) Range("F" & row).Value = Str(wordDoc.BuiltinDocumentProperties("Last save time")) Range("G" & row).Value = wordDoc.BuiltinDocumentProperties("Total editing time") Range("H" & row).Value = wordDoc.BuiltinDocumentProperties("Number of pages") Range("I" & row).Value = wordDoc.BuiltinDocumentProperties("Number of characters") Range("J" & row).Value = wordDoc.BuiltinDocumentProperties("Number of lines") Range("K" & row).Value = wordDoc.BuiltinDocumentProperties("Number of paragraphs") Range("L" & row).Value = wordDoc.BuiltinDocumentProperties(22) row = row + 1 '印刷も実行したい場合はコメントを外す 'wordDoc.PrintOut Copies:=1 wordDoc.Close SaveChanges:=False Set wordDoc = Nothing End If Next file wordApp.Quit SaveChanges:=False Set wordApp = Nothing Set fso = Nothing SearchDoc = row End Function
Excelファイルは下記となりますが、動作は保証しません。[表示]-[マクロ]-[マクロの表示]で、WordPropを[実行]します。
Wordのプロパティ(xlsmファイル)
最近の投稿
アーカイブ
- 2024年11月
- 2024年9月
- 2024年7月
- 2024年5月
- 2024年3月
- 2024年1月
- 2023年11月
- 2023年10月
- 2023年6月
- 2023年4月
- 2023年2月
- 2023年1月
- 2022年11月
- 2022年9月
- 2022年8月
- 2022年7月
- 2022年3月
- 2022年2月
- 2021年12月
- 2021年11月
- 2021年10月
- 2021年9月
- 2021年4月
- 2020年11月
- 2020年4月
- 2019年12月
- 2019年11月
- 2019年10月
- 2019年9月
- 2019年8月
- 2019年6月
- 2019年5月
- 2019年4月
- 2019年1月
- 2018年12月
- 2018年11月
- 2018年9月
- 2018年8月
- 2018年7月
- 2018年5月
- 2018年3月
- 2018年2月
- 2018年1月
- 2017年12月
- 2017年11月
- 2017年10月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年5月
- 2017年3月
- 2017年2月
- 2016年11月
- 2016年10月
- 2016年9月
- 2016年8月
- 2016年7月
- 2016年6月
- 2016年3月
- 2015年12月
- 2015年11月
- 2015年9月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年3月
- 2015年2月
- 2014年12月
- 2014年11月
- 2014年9月
- 2014年8月
- 2014年7月
- 2014年5月
- 2014年3月
- 2014年1月
- 2013年12月
- 2013年8月
- 2013年6月
- 2013年5月
- 2013年3月
- 2012年6月
- 2012年3月
- 2012年2月
- 2012年1月
- 2009年4月