vba中的运行时错误9

时间:2017-10-22 12:37:05

标签: excel vba excel-vba runtime-error

美好的一天,我在VBA中几乎是新手,我在路径指定方面遇到了问题,请考虑以下事项:

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意味着数组元素和集合成员只能在其定义的范围内访问,但它与我的情况有什么关系,我不知道。 为什么会这样?

2 个答案:

答案 0 :(得分:2)

在第二个示例中,第二行执行时工作簿处于打开状态。
在第一个示例中,无法保证工作簿在执行时将处于打开状态。

答案 1 :(得分:1)

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

因此Workbooks(ThisWorkbook.Path & "/" & "06-17.xlsx")无效(因为它包含路径),但Workbooks("06-17.xlsx")有效。

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