我正在尝试搜索文件夹(和子文件夹)中的所有excel工作簿以获取值。VBA搜索已关闭的工作簿以获取价值?
我的文件夹结构,在我的Excel工作簿的是,像这样:
destPath = "G:\WH DISPO\(3) PROMOTIONS\(18) Food Specials Delivery Tracking\Archive\"
然后我的存档文件夹内有各种各样的子文件夹像
+ 2017
- April
- May
+ 2016
- April
- May
工作簿的名称可能都不同,所以代码将需要可能使用通配符* .xlsm
这是我到目前为止:
Sub Search()
Dim srcWorkbook As Workbook
Dim destWorkbook As Workbook
Dim srcWorksheet As Worksheet
Dim destWorksheet As Worksheet
Dim SearchRange As Range
Dim destPath As String
Dim destname As String
Dim destsheet As String
Set srcWorkbook = ActiveWorkbook
Set srcWorksheet = ActiveSheet
Dim vnt_Input As String
vnt_Input = Application.InputBox("Please Enter Client Name", "Client Name")
destPath = "G:\WH DISPO\(3) PROMOTIONS\(18) Food Specials Delivery Tracking\Archive\"
destname = "*.xlsm"
On Error Resume Next
Set destWorkbook = ThisWorkbook
If Err.Number <> 0 Then
Err.Clear
Set wbTarget = Workbooks.Open(destPath & destname)
CloseIt = True
End If
For Each c In wbTarget.Sheets(1).Range("A:Q") 'No need for the .Cells here
If InStr(c, vnt_Input) > 0 Then 'vnt_Input is a variable that holds a string, so you can't put quotes around it, or it will search the string for "vnt_Input"
MsgBox "Found"
End If
Next c
End Sub
每个工作簿中的范围应始终保持不变。
我在尝试一些简单的事情,比如在找到值时显示一条消息。但目前,尽管工作簿中存在价值,但我得不到任何结果/消息。
我在这条线得到一个对象所需的错误:
For Each c In wbTarget.Sheets(1).Range("A:Q") 'No need for the .Cells here
请能有人告诉我在哪里,我错了?
编辑:
我可以改变消息框的每个循环列出每个结果像这样:
Dim i As Integer
For i = 20 To 100
For Each rngFound In rngFound
ThisWorkbook.ActiveSheet.Range("E" & i).Value = "1 Result found for " & rngFound & " in " & wbTarget.Path & "\" & wbTarget.Name & ", on row " & rngFound.Address
Next rngFound
Next i
所需的结果
写'顶部选项Explicit',然后尝试调试。你必须定义'CloseIt'和'c',可能还有别的。 HTTP://计算器。com/questions/1139321/how-do-i-force-vba-access-to-require-variables-to-be-defined – Vityata
收集字符串中的所有位置并在末尾打印它们可能会更好,或者你想每次都停下来,一旦找到价值就做点什么?如果这是您需要的功能,那么很难停止中间代码并更新工作表。 – User632716
@tompreston在功能方面,我只是想显示一个消息给出的工作簿的名称和文件路径的值 – user7415328