【发布时间】:2016-01-20 02:43:58
【问题描述】:
我正在使用 VBA 并使用 Msxml2.DOMDocument.6.0 来读取和解析 XML 文件。它主要工作,除了一些文件名在文件名中有 URL 样式编码。例如,文件名如下:
HelloWorld%2Ecom.xml
当我尝试加载此文件时,我的代码找不到该文件。这是我的代码的简化版本:
Dim filename as String
filename = "HelloWorld%2Ecom.xml" ' This variable is actually populated dynamically
Dim objXML As Variant
Set objXML = CreateObject("Msxml2.DOMDocument.6.0")
objXML.async = True
objXML.Load filename
我在加载操作过程中得到的具体错误是:
加载 XML 文件时出错:系统找不到指定的对象。
如果我手动从文件名中删除 % 符号,则文件加载正常。但是,我确实需要保留原始文件名。
任何建议将不胜感激。
迈克
【问题讨论】:
-
您绝对可以在读/写文件名时使用
%。确保在Load语句中使用完整的路径名。 -
但是,它绝对不起作用。还尝试用另一个 % 转义 % ,但仍然找不到文件:HelloWorld%%2Ecom.xml 给出相同的错误...
-
如何在代码中使用 Replace 函数(这样您就不需要更改实际文件名)将 % 替换为空格: strFileName = Replace(filename, "%", " ")
-
@MikePaisner,我通过在现有的 xml 文件中添加一个百分比并在没有错误的情况下加载来确定。 Windows 文件路径不允许以下 reserved characters: : " / \ | ? *。再次检查 完整 路径。CPU 目录(不是 URL)中是否存在这样的文件?
-
我的代码适用于文件夹中的所有文件,除了带有 % 登录文件名的文件,所以路径很好。当我从文件名中手动删除 % 时,它工作正常。我尝试使用 filesystemobject 使用 move 命令重命名文件,但我得到了同样的错误。我无法以编程方式重命名名称中带有 % 符号的文件,因为它找不到该文件。