ワイルドカードで検索してファイル名を取得
VBAでファイルを検索するときは
FileSearchオブジェクトを使います。
下のコードは
マイドキュメントのフォルダ内の拡張子.xls
つまりExcelのファイルを検索して
検索結果をシートに書き出します。
変数MyPathの文字列内の
「あなたのユーザー名」のところを適宜変更してください。
ファイルの検索にワイルドカード(*)を使います。
.Filename = "*.xls"
の"*.xls"の箇所の拡張子を換えれば
その拡張子が検索できます。
また、
MyPathを検索したいフォルダへのパスに変更すれば
そのフォルダを検索できます。
このコードでは、For文のなかで
検索結果のファイル名を
シートに書き出す操作をしています。
ここを変更すれば検索結果のファイルに対して
いろいろな操作ができます。
Sub macro100304a() |
実行後のシートの具体例
1行目にファイルの数、2行目以降ファイル名が続きます。
ファイル名といってもフルパスです。
ファイル名だけにするには、
MyPathで指定したフォルダの部分以降を取得します。
それには、Right関数とLen関数を使います。
それぞれの関数の説明はVBAヘルプにあります。
使い方は具体例を挙げます。
Right("やむえむのExcel VBAメモ", 5)
は、右から5文字の「VBAメモ」を返します。
Len("やむえむのExcel VBAメモ")
は、文字列の文字数の16を返します。
これを使ってフォルダの部分以降のファイル名を取得するには、
上記コードの「Cells(i + 1, 1) = .FoundFiles(i)」の部分の右辺を
Right(.FoundFiles(i), Len(.FoundFiles(i)) - Len(MyPath))
に変更します。
| 固定リンク
この記事へのコメントは終了しました。

コメント