【问题标题】:Workbooks.Open Method in VBAVBA 中的 Workbooks.Open 方法
【发布时间】:2011-05-10 00:55:17
【问题描述】:

我在 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.xlsmyTest.xls是放在同一个文件夹里的。这就是为什么我想更改为灵活的文件夹目录。

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

【问题讨论】:

    标签: vba excel excel-2003


    【解决方案1】:

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

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

    但你真正想做的是:

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

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

    【讨论】:

    • 我正在寻找这个“相对于什么?”信息,谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

    • 效果很好。非常感谢。
    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多