对于每个-在数组中打开指定的工作簿

时间:2018-11-14 10:03:12

标签: excel vba

我需要在包含数千个文件的目录中打开约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行,因此我怀疑错误在那里。

1 个答案:

答案 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