アプリ版:「スタンプのみでお礼する」機能のリリースについて

サブフォルダ含むフォルダ内のすべてのファイルから、指定する特定の文字列を含んだファイルの情報をリスト化するVBAを作成したいと考えていますが、うまく動きません。

以下のコードで、[ファイルとフォルダのリストを取得]の部分がコンパイルエラーになります。
どこに抜けがあるのかわからなくなってしまったため、どなかたお力をお貸しいただけますでしょうか。

よろしくお願いいたします。



Sub SearchKeyword()
' 検索対象ディレクトリ
Dim inputRootFolder As String
inputRootFolder = "C:\work"

' 検索キーワード
Dim keyword As String
keyword = "hoge"

' ファイル一覧の取得
Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim fileList As Collection
Set fileList = New Collection
Dim folderList As Collection
Set folderList = New Collection

' ファイルとフォルダのリストを取得
Call GetFileAndFolderNameList(fso.GetFolder(inputRootFolder), fileList, folderList)

' 検索対象ファイルの正規表現
Dim reFile As RegExp
Set reFile = New RegExp
reFile.Pattern = "\.(xls|xlsx)$"

' 検索対象のbook
Dim inputBook As Workbook

' キーワード検索実行
Application.ScreenUpdating = False

Dim i As Integer
On Error Resume Next
For i = 1 To fileList.Count

' 検索対象ファイルかどうかをチェック
If reFile.Test(fileList(i)) Then

' ファイルオープン
Set inputBook = Workbooks.Open(fileList(i), ReadOnly:=True)

Dim j As Integer
For j = 1 To inputBook.Worksheets.Count
Dim result As Range
' コメントを検索。値を検索する場合はLookIn:=xlValues、数式を検索する場合はLookIn:=xlFormulasとする。
' また、部分一致で検索。完全一致で検索する場合はLookAt:=xlWhole
Set result = inputBook.Worksheets(j).Cells.Find(What:=keyword, LookIn:=xlComments, LookAt:=xlPart)
If Not result Is Nothing Then
Debug.Print (fileList(i))
inputBook.Close SaveChanges:=False
Exit For
End If
Next j

' ファイルクローズ
inputBook.Close SaveChanges:=False
End If
Next i

Application.ScreenUpdating = True

Set inputBook = Nothing
Set reFile = Nothing
Set fileList = Nothing
Set folderList = Nothing
Set fso = Nothing

End Sub

A 回答 (2件)

こちらですね。



【VBA】ファイルとフォルダのリストを再帰的に取得する
https://minor.hatenablog.com/entry/2015/07/26/23 …

> VBAで特定のフォルダを指定すると、その配下のファイルとフォルダの一覧を取得する関数を作成しました。

呼び出す方だけ持ってきても、肝心のその関数をコピーし忘れたのでは使えませんね。 --;
    • good
    • 0

GetFileAndFolderNameListはどこにあるのですか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています