Dir関数を用いるため、ネットワーク上の長いファイルパスには未対応です。
Sub Test() ' 画面チラつきを防止する。 Application.ScreenUpdating = False ' フォルダパスとファイル名を宣言する。 Dim strFilePath As String Dim strFileNmae As String ' テキストボックスかセル入力でフォルダを指定させる。 strFilePath = "C:\Users\test\Desktop\テストディレクトリ" ' 末尾が\ではない場合、\を追加する。(未実装) strFilePath = strFilePath & "\" ' 指定フォルダ内のファイル名を取得する。 strFileName = Dir(strFilePath, vbNormal) ' 結果シートを変数に設定する。 Dim resultBookSheet As Worksheet Set resultBookSheet = Worksheets("sheet1") ' 結果シートの行数を宣言する。 Dim longGyo As Long longGyo = 1 ' 指定フォルダ内のファイルがなくなるまで繰り返す。 Do While strFileName <> "" Dim result As Range Dim firstAddress As String ' ファイルを開く。 With Workbooks.Open(Filename:=strFilePath & strFileName) ' ファイル内のシート数を取得する。 Dim sheetCnt As Long sheetCnt = .Worksheets.Count ' 1シート目からnシート目まで繰り返す。 Dim i As Long For i = 1 To sheetCnt Dim shp As Shape ' シートからオブジェクトがなくなるまで繰り返す。 For Each shp In .Worksheets(i).Shapes ' オブジェクトにテキストを書き込める場合 ' shp.TextFrameはテキストが書き込めないオブジェクトでエラーが発生してしまう。 ' shp.TextFrame2はOffice 2007以降で利用可能だが、 ' テキストが書き込めないオブジェクトでもエラーが発生しない。 If shp.TextFrame2.HasText = True Then ' 検索文字列がオブジェクト内に存在する場合 If InStr(shp.TextFrame2.TextRange.Text, "Excute") > 0 Then resultBookSheet.Cells(longGyo, 1).Value = strFilePath & strFileName resultBookSheet.Cells(longGyo, 2).Value = .Worksheets(i).Name resultBookSheet.Cells(longGyo, 3).Value = "セル(" & shp.TopLeftCell.Address & ") - オブジェクト" resultBookSheet.Cells(longGyo, 4).Value = shp.TextFrame2.TextRange.Text longGyo = longGyo + 1 End If End If Next Next i ' 保存せずファイルを閉じる。 .Close SaveChanges:=False End With ' 次のファイルを取得する。 strFileName = Dir() Loop ' 画面チラつき防止を解除する。 Application.ScreenUpdating = True End Sub