Workbooks.Open方法在VBA中

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

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

但是,当我尝试将Filename值更改为下面的新path,但我所有的做法都不起作用。 显示运行时错误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被放置在同一个文件夹中。 这就是为什么我想要更改为灵活的文件夹目录。

我怎么能解决这个问题? 赞赏您的阅读和答复。

您可以尝试使用ThisWorkbook.Path来创build绝对path。 它返回运行macros的工作簿的文件夹path(不包括文件名)。 像这样的东西应该工作:

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

确保包含反斜杠,因为工作簿path不会以一个结束。

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

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

但是你真正想要做的是:

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

其中EnsureSlash是一个自定义函数,它在string末尾附加反斜杠( \ ),如果它还没有在那里(因为当path是根目录时, ThisWorkbook.Path以斜杠结尾,否则不会)。