![見出し画像](https://assets.st-note.com/production/uploads/images/32662039/rectangle_large_type_2_c18bd53046ad9682c17e69937a379dd6.png?width=1200)
【マクロ実践編1】ファイルを検索するときのループ
Dir関数を使った際、フォルダ名にピリオドが含まれているとそのフォルダを認識してくれなかったので[FileSystemObject]で書き直して対応した件
フォルダ名にピリオドが含まれていても問題なく検索してくれる
◆準備
参照設定:[Microsoft Scripting Runtime]
◆変数宣言
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を使う。
この記事が気に入ったらサポートをしてみませんか?