- VB,VBA
- 2011-09-30 - 更新:2017-06-14
この記事は最終更新日から1年以上経過しています。
Visual BasicでFileSystemObjectを使用し、
指定したディレクトリ内の全ファイル(サブディレクトリを含む)を読み込む。
全階層を再帰的に検索することができます。
■コマンドボタンに以下のようにコードを記述
Private Sub ファイル検索_Click() Dim strPath As String Dim fsObj As Object If Not IsNull("検索文字列") Then Set fsObj = CreateObject("Scripting.FileSystemObject") strPath = "調べたいディレクトリまでのフルパス" strKey = "検索文字列" 'ディレクトリ読み込み関数を呼び出し Call SearchSubDirectory(fsObj.GetFolder(strPath), strKey) 'オブジェクトを破棄 Set fsObj = Nothing End If End Sub
■ディレクトリ読み込み関数を宣言
Private Sub SearchSubDirectory(ByVal fsObj As Object, ByVal strKey As String) Dim fsObj2 As Object Dim objFILE As Object 'サブディレクトリを探索するループ処理 For Each fsObj2 In fsObj.SubFolders 'フォルダ毎に再帰呼び出し Call SearchSubDirectory(fsObj2, strKey) Next fsObj2 'ディレクトリ内のファイル読み込み For Each objFILE In fsObj.Files With objFILE Debug.Print .ParentFolder 'ファイルが格納されているディレクトリ名 Debug.Print .Path 'フルパス Debug.Print .Name 'ファイル名 End With Next objFILE 'オブジェクトを破棄 Set fsObj = Nothing End Sub