工作簿.VBA中的打开方法

工作簿.VBA中的打开方法,vba,excel,excel-2003,Vba,Excel,Excel 2003,我的vba脚本位于myMacro.xls工作簿中。打开方法与下面一样工作良好 Workbooks.Open Filename:="D:\ExcelMacroProj\myTest.xls", ReadOnly:=True 但是,当我尝试将文件名值更改为一个新路径时,如下所示,但我的所有操作都不起作用。显示运行时错误1004 Workbooks.Open Filename:="myTest.xls", ReadOnly:=True or Workbooks.Open Filename:="./m

我的vba脚本位于myMacro.xls
工作簿中。打开
方法与下面一样工作良好

Workbooks.Open Filename:="D:\ExcelMacroProj\myTest.xls", ReadOnly:=True
但是,当我尝试将
文件名
值更改为一个新路径时,如下所示,但我的所有操作都不起作用。显示运行时错误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.xlsmyTest.xls放在同一个文件夹中。这就是为什么我想改为一个灵活的文件夹目录


如何解决此问题?感谢您的阅读和回复

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

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

但你真正想做的是:

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

,其中,
EnsureSlash
是一个自定义函数,它在字符串末尾附加反斜杠(
\
),如果它不在那里(因为
ThisWorkbook.Path
在路径为根目录时以斜杠结尾,否则不以斜杠结尾).

您可以尝试使用
此工作簿.Path
创建绝对路径。它返回运行宏的工作簿的文件夹路径(不包括文件名)。像这样的方法应该会奏效:

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

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

效果很好。非常感谢。我一直在寻找这个“相对什么?”的信息,谢谢!