2011-05-10 124 views
4

myMacro.xlsWorkbooks.Open方法的工作我的VBA脚本以及下面,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.xlsmyTest.xls放置在相同的文件夹。这就是为什么我想要更改为灵活的文件夹目录。

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

回答

5

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

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

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

+0

工作得很好。非常感谢。 – 2011-05-10 01:04:31

8

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

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

但是你真正想要做的是:

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

,其中EnsureSlash是附加一个反斜杠(\)到字符串的结尾,如果它不是已经存在(您的自定义功能,因为ThisWorkbook.Path结束当路径是根目录时以斜线显示,否则不显示)。

+0

我正在寻找这个“相对于什么?”信息,谢谢! – Scorchio 2016-01-21 11:50:04