您想要实现的目标(来自有问题的评论)不是问题 - 下面是我快速生成的一段代码,主要使用宏记录器中的部分:
Sub SearchString()
Dim LookupString As String
Dim WS As Worksheet
Dim SearchResult As Range
Dim MatchString As Boolean
Dim SourceFolder As String
Dim FileName As String
SourceFolder = "D:\DOCUMENTS\" 'Trailing "\" is required
LookupString = "abc"
FileName = Dir(SourceFolder & "*.xls?") 'Extension may be set using wildcards
Do While FileName <> ""
Application.DisplayAlerts = False
Application.Workbooks.Open (SourceFolder & FileName)
Application.DisplayAlerts = True
MatchString = False
For Each WS In Workbooks(FileName).Worksheets
Set SearchResult = WS.Cells.Find(What:=LookupString, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
SearchFormat:=False)
If Not SearchResult Is Nothing Then MatchString = True
Next WS
If MatchString = True Then MsgBox "File: " & Chr(34) & FileName & Chr(34) & vbNewLine & "has " & Chr(34) & LookupString & Chr(34) & " string."
Application.DisplayAlerts = False
Workbooks(FileName).Close SaveChanges:=False
Application.DisplayAlerts = True
FileName = Dir
Loop
End Sub
这将遍历放入的所有类型的 Excel 文件,SourceFolder
并在找到定义的字符串时显示一条消息。书中的纸张数量及其隐藏/可见状态无关紧要。
共享示例文件:https ://www.dropbox.com/s/ipmztbz6vu7y4qf/FilesLookupString.xlsm
我很确定您也可以将其用于 DOC 文件:只需将宏记录器用于可能不同的部分,例如搜索。祝你好运!
如果您决定将 Excel 文件内容读取为“类似二进制”的内容(但我建议不要这样做),请查看ADODB.Stream
对象。