1
我使用vba代码搜索工作簿列中的单元格列表,并且需要在文件夹中搜索这些单元格,并且如果单元格在任何工作簿中都匹配,则所有相应的数据需要被复制到主工作簿。循环在目录之间不工作
我用2个循环的工作,但如果一个人正在另外一个是不是,例如,如果通过的文件,我环夹我不能循环使用的主要工作簿中的列在陆续寻找一个细胞。
下面是代码:
Sub SearchFolders()
Dim fso As Object
Dim fld As Object
Dim strSearch As String
Dim strPath As String
Dim strFile As String
Dim wOut As Worksheet
Dim wbk As Workbook
Dim wks As Worksheet
Dim rFound As Range
Dim irow As Integer
Dim rng As Range
Dim strFirstAddress As String
On Error GoTo ErrHandler
Application.ScreenUpdating = False
strPath = "\dfs\Home\Tes"
Set wOut = ThisWorkbook.Worksheets("Data")
With wOut
lRow = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(strPath)
strFile = Dir(strPath & "\*.xls*")
Do While Cells(lRow, 1) < Empty
strSearch = Cells(lRow, 1)
Set wbk = Workbooks.Open _
(Filename:=strPath & "\" & strFile, _
UpdateLinks:=0, _
ReadOnly:=True, _
AddToMRU:=False)
For Each wks In wbk.Worksheets
Set rFound = wks.UsedRange.Find(strSearch)
If Not rFound Is Nothing Then
strFirstAddress = rFound.Address
End If
Do
If rFound Is Nothing Then
Exit Do
Else
Cells(lRow, 2) = rFound.Offset(0, 1).Value
Cells(lRow, 3) = rFound.Offset(0, 2).Value
End If
Set rFound = wks.Cells.FindNext(After:=rFound)
Loop While strFirstAddress < rFound.Address
Next
wbk.Close (False)
lRow = lRow + 1
Loop
End With
MsgBox "Done"
End Sub
实际上,这段代码不会循环所有文件的文件夹。它只访问第一个文件。我希望它能够一个接一个地循环文件夹中的所有文件。 – Striker
我只是需要代码来搜索该文件夹中的所有文件的匹配数据!我无法与代码一起工作。 – Striker
要使用fileSytemObject遍历文件列表,请参阅https://stackoverflow.com/a/2683516/7599798。或者你可以使用VBA'dir'命令 – FunThomas