我需要在包含数千个文件的目录中打开约200本书。这200个文件的名称已放置在Sheet 4 B3:B231
中。
但是,每当我运行宏时,我只会使代码在这些文件中的4个上运行,在指定范围内甚至没有提到4个文件中的1个。
Dim wb As Workbook, shtDest As Worksheet
Dim MyFile As String
Dim Filepath As String
Dim WoBo As Variant
Dim DirArray As Variant
DirArray = Sheets("Sheet4").Range("B3:B231").Value
Filepath = "C:\"
MyFile = Dir(Filepath)
Set shtDest = ThisWorkbook.Sheets("Sheet1")
For Each WoBo In DirArray
'code
Next WoBo
End Sub
我对数组还很陌生,我不太了解For Each行,因此我怀疑错误在那里。
答案 0 :(得分:0)
尝试以下类似方法。 For循环比For Each for阵列快,使用Transpose可以将其转换为一维数组以进行循环。
Dim dirArray()
dirArray = Application.Transpose(ThisWorkbook.Worksheets("Sheet4").Range("B3:B231").Value)
For i = LBound(dirArray) To Ubound(dirArray)
If instr(dirArray(i),"xls") > 0 Then '<== very basic check
Workbooks.Open(dirArray(i)) '<== should be full filepath of file
' Do stuff
End If
Next