Vba 在保存之前获取文档中保存的目标

Vba 在保存之前获取文档中保存的目标,vba,ms-word,Vba,Ms Word,我有一个模板,我想在保存之前在页脚中显示文档路径 我已经准备好了DocumentBeforeSave Sub并开始运行,但问题是我似乎无法获得文档的目标路径,除非我遗漏了什么 Private WithEvents App As Word.Application Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean) ' UPDATE FOOTER

我有一个模板,我想在保存之前在页脚中显示文档路径

我已经准备好了DocumentBeforeSave Sub并开始运行,但问题是我似乎无法获得文档的目标路径,除非我遗漏了什么

Private WithEvents App As Word.Application

Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    ' UPDATE FOOTER HERE '
End Sub
我首先认为参数Doc可能包含目标,但我只找到了当前目录


问题只出现在执行“另存为”时,否则页脚不需要更改。

现在,如果您有VBA代码,您知道需要另存为“.docm”。并不是说下面的内容可以满足您的需要,而是一个示例,说明了如何查看此文档的默认保存路径和“最新”保存路径。我将其设置为,如果有人执行SaveAs,则在关闭时显示不同的消息

Option Explicit
Dim strPath     As String

Private Sub Document_Open()
    MsgBox "On Open, default save path is: " & Options.DefaultFilePath(wdDocumentsPath)
    strPath = ActiveDocument.Path
End Sub
Private Sub Document_Close()
    If strPath <> ActiveDocument.Path Then
        MsgBox "Document now in DIFFERENT path." & vbCrLf & _
                "On Close, document was saved at: " & ActiveDocument.Path & vbCrLf & _
                "Originally the document was in path: " & strPath
    Else
        MsgBox "Document still in same path." & vbCrLf & _
                "On Close, document was saved at: " & ActiveDocument.Path & vbCrLf & _
                "Full Path & Name: " & ActiveDocument.FullName
    End If
End Sub

如果您再三考虑,您可能会发现,如果文档未保存,它就不能有文件路径,它根本不存在。您需要做的是保存文档,获取路径,将其插入页脚,然后再次保存..问题是,如何知道何时发生了保存?没有保存事件。有没有办法挂接到save事件并在那里进行更新?使用DocumentBeforeClose如何,这是一个选项吗?