VBA中的Workbooks.Open方法

时间:2011-05-10 00:55:17

标签: vba excel-vba excel-2003 excel

myMacro.xls Workbooks.Open方法中的我的vba脚本如下所示,

Workbooks.Open Filename:="D:\ExcelMacroProj\myTest.xls", ReadOnly:=True

但是当我尝试将Filename值更改为如下所示的新路径时,但我的所有实践都无效。显示运行时错误1004

Workbooks.Open Filename:="myTest.xls", ReadOnly:=True
or
Workbooks.Open Filename:="./myTest.xls", ReadOnly:=True
or
Workbooks.Open Filename:=".\myTest.xls", ReadOnly:=True

实际上 myMacro.xls myTest.xls 放在同一个文件夹中。这就是我想要更改为灵活的文件夹目录的原因。

我该如何解决这个问题?感谢您的阅读和回复。

2 个答案:

答案 0 :(得分:8)

Filename相对于当前的Excel目录(与打开的文档所在的目录不同)。

您可以使用ChDir "x:\new\path"更改当前目录。

但你真正想做的是:

Workbooks.Open Filename:=EnsureSlash(ThisWorkbook.Path) & "myTest.xls", ReadOnly:=True

,其中EnsureSlash是您的自定义函数,它将反斜杠(\)附加到字符串的末尾,如果它还没有(因为ThisWorkbook.Path以斜杠结尾时path是根目录,否则没有。)

答案 1 :(得分:6)

您可以尝试使用ThisWorkbook.Path制作绝对路径。它返回运行宏的工作簿的文件夹路径(不包括文件名)。这样的事情应该有效:

Workbooks.Open Filename:=ThisWorkbook.Path & "\myTest.xls", ReadOnly:=True

确保包含反斜杠,因为工作簿路径不以一个结尾。