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 放在同一个文件夹中。这就是我想要更改为灵活的文件夹目录的原因。
我该如何解决这个问题?感谢您的阅读和回复。
答案 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
确保包含反斜杠,因为工作簿路径不以一个结尾。