皆さん、こんにちは。現場で使えるVBAの知恵をお伝えしている講師です。
今回は少し趣向を変えて、皆さんのPCの奥底に眠っているであろう「2007年当時のデータ」についてお話しします。特に、私が以前コンサルティングで遭遇した「2007年 絵画・人物画部門」という、一見するとExcelとは無縁そうなフォルダ名を例に、レガシーデータとの向き合い方を解説します。
なぜ「古いデータ」が整理できないのか
当時、そのクライアントは数千枚の人物画データと、それに対応するExcel管理表を抱えていました。しかし、ファイル名がバラバラで、リンクも切れており、誰も手を付けられない「死蔵データ」と化していました。ここで重要なのは、VBAを使って「ファイルパスを自動取得し、画像とデータを紐づける」という作業を自動化することです。
FileSystemObjectで過去を紐解く
2007年当時のファイル形式(xls)と現在の形式(xlsx)が混在していても、VBAなら一括で処理できます。以下のコードは、フォルダ内の全ファイルをループし、特定の規則(例:人物名_ID)でリスト化する際の骨子です。
コードの勘所
FileSystemObject(FSO)を使用する際は、必ず「参照設定」を意識してください。
Sub ListFiles()
Dim fso As Object
Dim folder As Object
Dim file As Object
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set folder = fso.GetFolder(“C:\2007_Data\人物画”)
For Each file In folder.Files
‘ここでファイル名から情報を抽出し、セルに書き出す
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = file.Name
Next
End Sub
実務における「再利用」の視点
この「2007年 絵画・人物画部門」の案件では、単にリストを作るだけでなく、「画像が存在しない管理行を赤く塗りつぶす」という条件付き書式をVBAで制御することで、欠損データの特定をわずか数分で完了させました。
古いデータは、単なるゴミではありません。今の業務プロセスに組み込むための「正規化」さえ済ませれば、貴重なナレッジベースに生まれ変わります。
皆さんのデスクトップにある、名前すら忘れてしまった古いフォルダ。今こそVBAで光を当ててみてはいかがでしょうか。それが、業務効率化の大きな一歩になるはずです。
