MS Word VBA语法求助:如何在当前工作目录创建Documents?
问题解决方案
一、修复创建文档副本的语法错误
你最初的两行代码存在语法问题,Documents.Add方法仅需传入模板路径(这里用当前活动文档路径作为模板)即可创建新文档实例,无需额外拼接路径,正确写法如下:
Set myCopy = Documents.Add(ActiveDocument.FullName)
路径控制是后续SaveAs2方法的职责,不需要在创建文档时拼接。
二、解决无默认Documents文件夹权限的保存问题
由于没有默认Documents文件夹的访问权限,直接用Documents.Add创建的新文档会默认指向该受限目录,导致相对路径保存失败,可通过以下两种方式解决:
方法1:直接在目标路径创建并复制内容
先在指定路径创建空白文档,再复制原文档内容,避免默认路径限制:
Dim docName As String docName = "你的副本文件名.docx" '替换为实际文件名 Dim targetPath As String targetPath = ActiveDocument.Path & "\Payload\" & docName '先创建空白文档 Set myCopy = Documents.Add() '复制原文档全部内容到新文档 ActiveDocument.Content.Copy myCopy.Content.Paste '保存到目标路径 myCopy.SaveAs2 targetPath
方法2:临时修改默认保存路径
先将Word默认保存路径临时改为当前文档所在路径,创建副本后再恢复:
Dim originalSavePath As String Dim docName As String docName = "你的副本文件名.docx" '保存原默认路径 originalSavePath = Options.DefaultFilePath(wdDocumentsPath) '临时设置默认路径为当前文档所在目录 Options.DefaultFilePath(wdDocumentsPath) = ActiveDocument.Path '基于原文档创建副本 Set myCopy = Documents.Add(ActiveDocument.FullName) '保存到子文件夹 myCopy.SaveAs2 ActiveDocument.Path & "\Payload\" & docName '恢复原默认路径 Options.DefaultFilePath(wdDocumentsPath) = originalSavePath
额外注意事项
- 确保原文档已保存(
ActiveDocument.Path不为空),否则会报错,若原文档未保存,需先提示用户保存。 - 确认
\Payload\文件夹已存在,否则SaveAs2会失败,可提前判断并创建:
If Dir(ActiveDocument.Path & "\Payload", vbDirectory) = "" Then MkDir ActiveDocument.Path & "\Payload" End If
内容的提问来源于stack exchange,提问作者Chad O'Donnell
相关产品推荐
相关产品推荐

