VBA100本ノック 82本目の投稿です。Excelの神髄さんの模範解答はコチラ
問題
フォルダ内の全てのExcelファイルについて、
以下の情報(ドキュメントプロパティ等)を取得し、
シートへ出力してください。
A列:ファイル名
B列:作成者
C列:更新者
D列:作成日時
E列:更新日時
F列:最終印刷日
G列:サイズ
※フォルダおよび出力シートは任意
↓イメージ

解答
Option Explicit
Sub ノック82本目()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
Dim fso As New FileSystemObject
Dim f As File
Dim i As Long: i = 2
Dim wb As Workbook '起動が必要
On Error Resume Next
For Each f In fso.GetFolder(ThisWorkbook.Path & "\テスト").Files
If fso.GetExtensionName(f) Like "xls*" Then
Set wb = Workbooks.Open(f, , True) ' ドキュメント取得のため開く
ws.Cells(i, 1).Value = f.Name
ws.Cells(i, 2).Value = wb.BuiltinDocumentProperties("Author") '著者
ws.Cells(i, 3).Value = wb.BuiltinDocumentProperties("Last author") '更新者
ws.Cells(i, 4).Value = wb.BuiltinDocumentProperties("Creation date") '作成日時
ws.Cells(i, 5).Value = wb.BuiltinDocumentProperties("Last save time") '更新日時
ws.Cells(i, 6).Value = wb.BuiltinDocumentProperties("Last print date") '最終印刷日時 印刷してないとエラー
ws.Cells(i, 7).Value = f.Size
i = i + 1
wb.Close ' 閉じる
End If
Next
End Sub
フォルダ内の全てのファイルをループする方法は
FSOさんを使えば楽勝でしたね。

ファイル→”f”と定義する派です。
皆さんはどう指定しますか?


FSOさんが至る所で
活躍できますね!

まるで俺みたいだな!

・・・まぁ、ある意味…
全ファイルをループする中、Excelファイルのみに処理する方法については、
拡張子が”xls*”かどうかで判断。

FSOさんのGetExtensionName…拡張子のみを取得
Workbook.BuiltinDocumentProperties プロパティ
指定したブックのすべての組み込みドキュメントプロパティを表す
DocumentPropertiesコレクションを返す。 読み取り専用。
今回初めてだったので、使い方を一から解説してみました。

インデックス、プロパティ名どちらで指定してもいいとは思いますが
近くにコメントつけておいた方がいいかなw さすがに。

ちなみに神髄さんのサイトにインデックス、プロパティ名、和名一覧があるので
はい、神。


さすが神髄さんだね!

ブックマーク必須っすね!

いや、俺は都度調べるけど?
その方が他にもいろんなページ見れて
勉強になるし?

急になんやこいつ……
あとがたり
おはこんばんちは。uぷ主です。
82本目、様々なドキュメントプロパティを取得する問題でした。
“全フォルダ”や”全ファイル”と聞くと、FSOさんしか使わなくなってきたこの頃です。
昔はその都度検索して、DirやFSOさん(もしくは両方)が混在したコード書いてました。
成長したなぁ…
100本ノックの中でも特に印象に強く残ってる問題がいくつかありますが、
その中の一つが20本目、FSOさんを初めて使った問題です。
是非そちらも見てください。
どえらいことやってますんで。
さて、おそらく今日のメインの
Workbook.BuiltinDocumentPropertiesプロパティさんについてですが…
これも恥ずかしながら初見でした。
たぶんこれまでに一度は使ったことあったはずなんですが…。
いつも、「VBA 作成者 取得」とか、「VBA 更新日時 取得」とかで調べて、
テキトーにコピペしてしか使ってなかったのでw
今回 BuiltinDocumentProperties の一覧を見れたので、ある程度何が取得できるかは目星ついたかな。
これからは実務でも使うこと増えそうです。
今回も非常に勉強になりました!
ありがとうございました!!
そして最後までご視聴ありがとうございました。




コメント