将文件句柄存储在数组中

时间:2016-05-10 09:47:51

标签: arrays vba file-handling filehandle

我尝试打开指定文件夹中的所有*.xlsx文件,并将文件句柄存储在数组中。

我的代码看起来像这样

Dim Files() As Workbook
ReDim Files(Count)

File = Dir(Path & "\*.xlsx")
Count = 0

Do While File <> ""
    Set Files(Count) = Workbooks.Open(Path & File, , True)
    Count = Count + 1
    File = Dir()
Loop

代码似乎有效,但是,当我第二次运行它时(再次点击运行按钮),我得到一个错误号13。

调试代码我将问题跟踪到行

Set Files(Count) = Workbooks.Open(Path & File, , True)

由于我对vba没有经验,我想我没有以正确的方式做到这一点......

将文件句柄存储到数组中特定文件夹中的所有文件的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您错过了路径分隔符

Set Files(Count) = Workbooks.Open(Path & "\" & File, , True)

答案 1 :(得分:-1)

代码应为:

Dim Files() As Workbook
Dim Count As Integer
ReDim Files(Count)

File = Dir(Path & "\*.xlsx")
Count = 0

Do While File <> ""
    ReDim Preserve Files(Count)
    Set Files(Count) = Workbooks.Open(Path & File, , True)
    Count = Count + 1
    File = Dir()
Loop

您需要重新调整阵列。保留保留现有数据。