VBA中的Workbooks.Open方法

Nan*_* HE 4 excel vba excel-2003 excel-vba

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

Workbooks.Open Filename:="D:\ExcelMacroProj\myTest.xls", ReadOnly:=True
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将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
Run Code Online (Sandbox Code Playgroud)

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

我怎么能解决这个问题?感谢您的阅读和回复.

GSe*_*erg 8

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

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

但你真正想做的是:

Workbooks.Open Filename:=EnsureSlash(ThisWorkbook.Path) & "myTest.xls", ReadOnly:=True
Run Code Online (Sandbox Code Playgroud)

,EnsureSlash你的自定义函数\在字符串末尾附加一个反斜杠(),如果它还没有(因为ThisWorkbook.Path当路径是根目录时以斜杠结尾,否则没有).


Gre*_*ins 6

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

Workbooks.Open Filename:=ThisWorkbook.Path & "\myTest.xls", ReadOnly:=True
Run Code Online (Sandbox Code Playgroud)

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