非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Excel/VBAでフォルダ名とファイル名の一部しかわからない時に検索する方法

      2018/07/03

Excelマクロで特定のフォルダにアクセスする際に、フォルダ名やファイル名の一部しかわからない時にパスを特定する方法があります。

ざっくり言うとワイルドカードを使ってヒットさせることでパス名を取得します。

もし最後のフォルダ名の一部しかわからない場合、例えば以下のフォルダ名で最後の一部が分からないとします。

C:\Users\...\_source\ExcelVBA\outlook???\

その場合は以下のようにすればA1セルにヒットしたフォルダ名が表示されます。

path1 = Dir("C:\Users\...\_source\ExcelVBA\outlook*", vbDirectory)
Range("A1") = path1
 

 

以下のようにワイルドカードで示した部分も含めフォルダ名が検知できました。

 

ファイル名も同じくワイルドカードを使って検知させます。Module1というファイルの拡張子がわからないと想定します。

path1 = Dir("C:\Users\...\_source\ExcelVBA\outlookvba\Module1.*", vbNormal)
Range("A1") = path1
 

 

実行するとこの通り、ファイル名が検知できました。

広告

 

フォルダ名とファイル名とがどちらも一部不明の場合は以下のようにすると検知できます。以下の例はフルパスを表示するようにしています。

Sub serchFileName()
  PathName = "C:\Users\...\_source\ExcelVBA\"

   'フォルダーのあいまい検索
   FolderName = "outlook*"
   path1 = Dir(PathName & FolderName, vbDirectory)

   'ファイルのあいまい検索
   Filename = "Module1.*"
   path2 = Dir(PathName & path1 & "\" & Filename, vbNormal)

   Range("A1") = PathName & path1 & "\" & path2
End Sub
 

 

結果はご覧のとおりです。

広告

 - Excel, VBA