日常的に繰り返される「プロパティの確認作業」、いつまで続けますか?
「どのファイルが最新版かわからない……。1つずつ右クリックして『プロパティ』を開いて、更新日時を確認して。あ、こっちの方がサイズが大きいから内容が更新されているのかな?…… って、もう午前中が終わっちゃうよ!」
実務の現場では、このような光景がよく見られます。
でも、安心してください。そんな「手間がかかり、神経を使うわりに生産性の低い作業」こそ、VBAの得意分野です。
今回は、指定したフォルダ内にあるすべてのファイルの「更新日時」と「ファイルサイズ」を、一瞬でExcelシートに書き出す便利なコードをご紹介します。
コピペで今すぐ使える自動取得ツール
ここでは、初心者の方でも扱いやすい「FileSystemObject(ファイルシステムオブジェクト)」という仕組みを使用します。これは、Windowsのファイルを効率よく操作するための「専門家」のようなものです。
Sub GetFileInfo()
' 変数の準備
Dim fso As Object
Dim folderPath As String
Dim targetFolder As Object
Dim fileItem As Object
Dim i As Long
' 1. 調査したいフォルダのパスを指定(ここは自分の環境に合わせて書き換えてください)
folderPath = "C:\Your\Folder\Path"
' 2. ファイル操作の専門家(FSO)を呼び出す
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダが存在するかチェック
If Not fso.FolderExists(folderPath) Then
MsgBox "指定したフォルダが見つかりません!パスを確認してください。", vbExclamation
Exit Sub
End If
Set targetFolder = fso.GetFolder(folderPath)
' 3. シートの見出しを作る
Cells(1, 1).Value = "ファイル名"
Cells(1, 2).Value = "更新日時"
Cells(1, 3).Value = "サイズ(KB)"
i = 2 ' 書き出し開始行
' 4. フォルダ内のファイルを1つずつループ(繰り返し)処理
For Each fileItem In targetFolder.Files
Cells(i, 1).Value = fileItem.Name ' ファイル名
Cells(i, 2).Value = fileItem.DateLastModified ' 最終更新日時
' サイズはByteで取得されるので、1024で割ってKB(キロバイト)表示にする
Cells(i, 3).Value = Round(fileItem.Size / 1024, 1)
i = i + 1
Next fileItem
' 5. 後片付けと完了報告
Set fso = Nothing
MsgBox "データの取得が完了しました!", vbInformation
End Sub
初心者がつまづきやすいポイント
コードの中でfileItem.Size / 1024という計算をしています。「なぜ1,024で割るの?」と疑問に思われるかもしれません。
コンピュータの世界では、1,024バイトが集まって1キロバイト(KB)になります。
そのまま表示すると「1,050,000バイト」のように桁数が多くて見づらいため、私たちが直感的に理解しやすい「KB」という単位に変換しています。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント