【发布时间】:2016-10-17 22:48:37
【问题描述】:
在 Microsoft Word 2010 VBA 中
我在尝试打开文件名包含井号“#”的文档时遇到运行时错误 5174,并带有相对文件路径。
Sub openPoundedFilename()
Dim doc As Object
' Both files "C:\Temp\foo_bar.docx" and "C:\Temp\foo#bar.docx" exist
' With absolute file paths
Set doc = Documents.Open(fileName:="C:\Temp\foo_bar.docx") ' Works
doc.Close
Set doc = Documents.Open(fileName:="C:\Temp\foo#bar.docx") ' Works
doc.Close
' With relative file paths
ChDir "C:\Temp"
Set doc = Documents.Open(fileName:="foo_bar.docx") ' Works
doc.Close
Set doc = Documents.Open(fileName:="foo#bar.docx") ' Does not work !!!!
'Gives runtime error 5174 file not found (C:\Temp\foo)
doc.Close
End Sub
我没有找到任何解释为什么最后一个 Documents.Open 失败。
这可能与用于 URL 的“#”符号不匹配有关。
(见https://support.microsoft.com/en-us/kb/202261)
提前感谢您的回答
编辑 17/10/2016 13:37:17
宏录制会生成以下内容:
Sub Macro1()
'
' Macro1 Macro
'
'
ChangeFileOpenDirectory "C:\Temp\"
Documents.Open fileName:="foo#bar.docx", ConfirmConversions:=False, _
ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""
End Sub
此宏不起作用(给出相同的错误 5174)。
【问题讨论】:
-
#后面的都是子地址,可以试试Record Macro看看生成的代码。
-
似乎只适用于完整路径
Documents.Open CurDir & "\foo#bar.docx"