• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで検索、その後)

Excelで外部ファイルを検索するダイアログの呼び出し方法と検索結果表示の可能性

このQ&Aのポイント
  • Excelで外部ファイルを検索するダイアログの呼び出し方法と検索結果表示の可能性について調べています。vbNullStringの部分にデータを代入しても検索結果表示ができないようです。
  • Excelで検索対象の外部ファイルを指定するダイアログを呼び出す方法を探しています。しかし、検索結果を同時に表示することはできないようです。
  • ExcelのVBAコードを使用して外部ファイルを検索するダイアログを呼び出したいと思っています。しかし、検索結果の表示についてはうまくいっていないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.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

webdiver
質問者

お礼

 ありがとうございまいた。お礼が遅れてごめんなさい。 「再帰」はちょっとだけかじった事があるのですが、その辺の記憶を呼び起こしつつ、頂いたソースを解釈してゆきたいと思います。

関連するQ&A