見出し画像

【マクロ実践編1】ファイルを検索するときのループ

Dir関数を使った際、フォルダ名にピリオドが含まれているとそのフォルダを認識してくれなかったので[FileSystemObject]で書き直して対応した件

フォルダ名にピリオドが含まれていても問題なく検索してくれる

◆準備
参照設定:[Microsoft Scripting Runtime]

画像1

◆変数宣言
Dim tarPath As String
 tarPath = ThisWorkbook.Path
Dim fs As New Scripting.FileSystemObject
Dim basefolder As Scripting.Folder
 Set basefolder = fs.GetFolder(tarPath)
Dim mysubfiles As Scripting.Files
 Set mysubfiles = basefolder.Files
Dim mysubfile As Scripting.File

◆フォルダ内のファイルを全て検索
For Each mysubfile In mysubfiles
 (処理)
Next

Set fs = Nothing

Dir関数を使って書く

◆変数宣言
Dim tarPath As String
 tarPath = ThisWorkbook.Path
Dim buf As String
 buf = Dir(tarPath & "\*.xlsx") 'ファイル名の取得

◆フォルダ内のファイルを全て検索
Do While Len(buf) > 0
(処理)
buf = Dir()
Loop

まとめ

Dirで書くのが簡単だけど、ファイル名でエラーになったらいやなのでFileSystemObjectを使う。

この記事が気に入ったらサポートをしてみませんか?