- ベストアンサー
Excelで外部ファイルを検索するダイアログの呼び出し方法と検索結果表示の可能性
- Excelで外部ファイルを検索するダイアログの呼び出し方法と検索結果表示の可能性について調べています。vbNullStringの部分にデータを代入しても検索結果表示ができないようです。
- Excelで検索対象の外部ファイルを指定するダイアログを呼び出す方法を探しています。しかし、検索結果を同時に表示することはできないようです。
- ExcelのVBAコードを使用して外部ファイルを検索するダイアログを呼び出したいと思っています。しかし、検索結果の表示についてはうまくいっていないようです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ファイル検索画面の使い方は知りませんが、とりあえずはファイルの検索機能があれば良いんですよね? 以下、フォルダの再帰検索を行うコードの例です。 参考にするなり、改造して使うなりしてください。 適当に作ったものなので、バグが残ってるかもしれません。 '使い方 Public Sub SrchSYSFile() Dim Found() As String Dim i As Long ReDim Found(0) Call QueryFile("C:\Windows\", "*.SYS", Found()) For i = 1 To UBound(Found()) Debug.Print Found(i) Next i End Sub 'コード例 Public Function QueryFile(StartPath As String, SearchFileName As String, ByRef Found() As String) 'フォルダの再帰検索を行い、Foundに格納する 'Found(0)は空文字列になるが、これは仕様 Dim FldName As String Dim Files As Collection Dim FileName As String Dim FoundCt As Long Dim i As Long Dim Folders() As String Dim FolderCt As Long On Error Resume Next '現在のフォルダに対象ファイルが含まれているかを調べ、あれば、一覧に追加 FileName = "" FileName = Dir(StartPath & SearchFileName, vbNormal + vbHidden + vbSystem) FoundCt = UBound(Found) Do Until FileName = "" FoundCt = FoundCt + 1 ReDim Preserve Found(FoundCt) Found(FoundCt) = StartPath & FileName FileName = "" FileName = Dir() Loop '現在のフォルダに含まれるフォルダの一覧を取得 FolderCt = -1 ReDim Folders(0) FldName = "" FldName = Dir(StartPath & "*.*", vbDirectory) Do Until FldName = "" If FldName <> "." And FldName <> ".." Then If (GetAttr(StartPath & FldName) And vbDirectory) = vbDirectory Then FolderCt = FolderCt + 1 ReDim Preserve Folders(FolderCt) Folders(FolderCt) = StartPath & FldName & "\" End If End If FldName = "" FldName = Dir() Loop '取得したフォルダに対して、再帰検索を行う For i = 0 To FolderCt Call QueryFile(Folders(i), SearchFileName, Found()) Next i End Function
お礼
ありがとうございまいた。お礼が遅れてごめんなさい。 「再帰」はちょっとだけかじった事があるのですが、その辺の記憶を呼び起こしつつ、頂いたソースを解釈してゆきたいと思います。