运行时错误9在vba

美好的一天,我在VBA中已经有了很多新的东西,并且我在path指定方面遇到了问题,请考虑以下几点:

x = Workbooks(ThisWorkbook.Path & "/" & "06-17.xlsx").Worksheets(1).Cells(2, 1).Value 

有了这段代码,我有运行时错误9,但如果我使用下面的代码,它工作正常:

 Workbooks.Open (ThisWorkbook.Path & "/" & "06-17.xlsx") x = ActiveWorkbook.Worksheets(1).Cells(2, 1).Value 

我发现运行时错误9意味着数组元素和集合成员只能在他们定义的范围内访问,但是与我的情况有什么关系,我不知道。 为什么会发生?

Workbooks集合的索引是文件 (或整数),而不是文件path和名称

所以Workbooks(ThisWorkbook.Path & "/" & "06-17.xlsx")将无效(因为它包含path),但Workbooks("06-17.xlsx")将是有效的。

这就是为什么(或者至less与之相关的原因),如果两个工作簿具有相同的文件名,即使已经从两个不同的目录中打开,也不能同时在Excel中打开两个工作簿。

在第二个示例中,第二行执行时打开工作簿。
在第一个例子中,不能保证工作簿在执行时是开放的。