以下是一个示例代码,可以搜索多个Excel工作簿中的字符串,并返回字符串所在行的VBA代码:
Sub SearchStringInWorkbooks()
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Dim Cell As Range
Dim SearchString As String
Dim ResultCell As Range
Dim ResultSheet As Worksheet
Dim i As Long
' 设置文件夹路径和搜索字符串
FolderPath = "C:\YourFolderPath\" ' 设置为包含要搜索的工作簿的文件夹路径
SearchString = "YourSearchString" ' 设置要搜索的字符串
' 创建结果工作表
Set ResultSheet = ThisWorkbook.Sheets.Add
ResultSheet.Name = "Search Result"
ResultSheet.Range("A1:B1").Value = Array("File", "Row")
' 循环遍历文件夹中的所有工作簿
Filename = Dir(FolderPath & "*.xlsx")
i = 2 ' 从第二行开始记录结果
Do While Filename <> ""
' 打开工作簿
Workbooks.Open Filename:=FolderPath & Filename
For Each Sheet In ActiveWorkbook.Sheets
' 在每个工作表中搜索字符串
Set Cell = Sheet.Cells.Find(What:=SearchString, LookIn:=xlValues, LookAt:=xlWhole)
If Not Cell Is Nothing Then
' 找到字符串,将文件名和行号记录到结果工作表
Set ResultCell = ResultSheet.Cells(i, 1)
ResultCell.Value = Filename
ResultCell.Offset(0, 1).Value = Cell.Row
i = i + 1
End If
Next Sheet
Workbooks(Filename).Close SaveChanges:=False
Filename = Dir
Loop
' 自动调整结果工作表的列宽
ResultSheet.Columns("A:B").AutoFit
' 显示完整的结果工作表
ResultSheet.Activate
' 清除对象引用
Set ResultSheet = Nothing
Set Sheet = Nothing
Set Cell = Nothing
Set ResultCell = Nothing
End Sub
请注意,您需要将FolderPath
变量设置为包含要搜索的工作簿的文件夹的路径,并将SearchString
变量设置为要搜索的字符串。此代码将在结果工作簿中创建一个名为“Search Result”的工作表,并将搜索结果记录在其中。每个结果包括文件名和包含搜索字符串的行号。
请确保在运行代码之前将所有要搜索的工作簿关闭,以避免冲突。