Word VBA-Documents.Open FileName不起作用

时间:2018-07-04 21:27:33

标签: vba ms-word

我有这段代码(此代码是较大堆栈的一部分,但这显然是行不通的。

Sub clearup()

Documents.Open FileName:="D:\test"

End Sub

test是一个.doc文件。我知道test.doc在创建时就在那儿。但是,如果我运行该宏,则会收到“抱歉,我们找不到您的文件。它是被移动,重命名还是删除了?”。我也尝试将名称更改为test.doc无济于事。知道我在做什么错吗?

3 个答案:

答案 0 :(得分:1)

您只需要指定带有扩展名的完整文件名即可。

Sub clearup()

Documents.Open FileName:="D:\test.doc"

End Sub

您可能必须授予权限,但随后它应该打开。

已更新

为帮助调试问题,您可以看一下Documents.Open方法接受的其他参数。

例如,使用OpenAndRepair参数:

Documents.Open FileName:="D:\test.doc", OpenAndRepair:=True

答案 1 :(得分:0)

我已经解决了问题,问题的第一部分是我没有使用.docx结尾(我没有注意到,因为doc的名字后面没有结尾),这与建议非常一致AJD的原因以及使我偏离轨道的原因是该文档已打开,但我没有注意到,所以我开始收到无效的名称错误,不知道为什么。

感谢您的建议。

答案 2 :(得分:0)

此讨论适用于那些使用VBA与Word,Excel等一起编写宏的人,并且在执行宏时遇到此错误:

Documents.Open(..)

错误5174很抱歉,我们找不到您的文件。它是移动,重命名还是删除了?  (“驱动器号:... \文件名...”)

我已经看到很多有关此错误的帖子。有两种主要方案,最简单的一种是唯一一种正在讨论的方案。

场景1

您正在尝试打开一个“ path \ file”名称,该名称实际上在程序启动并提供“ path \ file”名称值的时间与它实际尝试打开文件的时间之间移动了。这很容易解决。

场景2

最重要的也是最难检测的

您用于指定要使用您的宏代码打开的“ path \ file”名称的值,例如:

        Documents.Open (....

...所述值包含不可打印的字符(我不是在说非字母数字,例如“。”或“&”,还是不允许使用的字符,我是在说ASCII 13最有可能是字符末尾的最后一个字符值,但是当您使用Debug.Print时,不会打印该字符。

确认步骤:

处于调试模式时,Debug.Print“您要打开的path \ file的值”。

这将按预期进行打印,没有可见问题,然后您可以通过将打印值粘贴到Windows资源管理器中来确认文件存在,并且文件应自动打开。如果确实是手动打开的,那么您可能正在处理方案#2

推荐

在调试模式下,使用包含path \ file vallue的变量,编写一个FOR语句,以使用Debug.Print Asc(<>)遍历字符串的每个字符,其中<>是FOR中的变量每次从path \ file字符串中分配1个字符的迭代。您很可能会看到最后一个字符将显示为13

VBA功能

        Trim(....

不会解决此问题。您需要使用

         Replace (...

以“ Chr(13)”作为值的函数,试图用vbNullString替换该值

有一些技巧,包括在文件名中添加ASCII字符13(回车,不收取行费),然后附加名称等。

有一些实用程序可以清除这些问题,也许不是完全清除?...这可能是原因。

我的雷达中的另一个可能原因是DOS提示符在使用“ >>”将DIR命令的输出重定向到文件以从DIR命令创建文件列表时,添加了额外的char 13。 DIR命令结果中的所有文件都不会发生这种情况,它可能适用于具有特殊字符的文件。我没有时间进一步调查。