ファイルを検索するVBA
フォルダ内のファイルを検索するVBA
VBAの解説
- NewSearchメソッドで前回の検索条件と結果をクリアします。
- SearchSubFoldersをFalseに設定しサブフォルダ内を検索しないようにセットします。
- LookInに検索するフォルダ「C:\picture」をセット
- Filenameにワイルドカードを使用し「"car*.*"」をセット、これで先頭に「car」が付いたファイルが検索できます。
- Executeで検索開始、引数SortByでファイル名順、SortOrderで昇順に設定していますが、ここでは意味ありません。
- Executeの戻り値を判定し、0より大きい場合FoundFiles.Countでファイル数を表示、0なら「見つかりませんでした」のメッセージを表示します。
Option Explicit
'Excel VBAでフォルダ内のファイルを検索
Private Sub ExFileSearch()
Dim i As Integer
'ファイル検索を開始
With Application.FileSearch
.NewSearch
.SearchSubFolders = False
.LookIn = "C:\picture"
.Filename = "car*.*"
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
MsgBox .FoundFiles.Count & "個見つかりました。"
Else
MsgBox "見つかりませんでした"
End If
End With
End Sub
サブフォルダ内も含めファイルを検索するVBA
VBAの解説
SearchSubFoldersをTrueに設定しサブフォルダ内を検索するようにセットします。
'Excel VBAでサブフォルダ内も含めファイルを検索
Private Sub ExSubFolderFileSearch()
Dim i As Integer
'ファイル検索を開始
With Application.FileSearch
.NewSearch
.SearchSubFolders = True
.LookIn = "C:\picture"
.Filename = "car*.*"
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
MsgBox .FoundFiles.Count & "個見つかりました。"
Else
MsgBox "見つかりませんでした"
End If
End With
End Sub
特定のファイルを検索するVBA
VBAの解説
Filenameにワイルドカードを使用しないで、ファイル名を指定しています。
'Excel VBAで特定のファイルを検索
Private Sub ExFileNameSearch()
Dim i As Integer
'ファイル検索を開始
With Application.FileSearch
.NewSearch
.SearchSubFolders = False
.LookIn = "C:\picture"
.Filename = "car.jpg"
If .Execute > 0 Then
MsgBox "見つかりました。"
Else
MsgBox "見つかりませんでした"
End If
End With
End Sub
指定フォルダ内のExcelファイルを検索するVBA
VBAの解説
FileTypeにmsoFileTypeExcelWorkbooksを設定し、Excelファイルを検索しています。
ForとFoundFiles.Countで見つかったファイル数だけループし、FoundFiles(i)でセルに代入しています。
'Excel VBAで指定フォルダ内のExcelファイルを検索
Private Sub ExExcelFileSearch()
Dim i As Integer
' ファイル検索を開始します
With Application.FileSearch
.NewSearch
.LookIn = "c:\"
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
'ファイル名を表示する
Range("E" & i) = .FoundFiles(i)
Next i
Else
MsgBox "見つかりませんでした"
End If
End With
End Sub
上のプロシージャーを実行する
Private Sub CommandButton1_Click()
'フォルダ内のファイルを検索
ExFileSearch
'サブフォルダ内も含めファイルを検索
ExSubFolderFileSearch
'特定のファイルを検索
ExFileNameSearch
'指定フォルダ内のExcelファイルを検索
ExExcelFileSearch
End Sub