2014-12-04 4 views
0

У меня есть шаблон, в котором я хочу отобразить путь к документу в нижнем колонтитуле непосредственно перед тем, как произойдет спасение.Получить место назначения для сохранения в DocumentBeforeSave

У меня есть 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 содержит назначение, но я нашел только текущий каталог.

Проблема заключается только при выполнении «Сохранить как», иначе нижний колонтитул не нуждается в изменении.

+0

Если вы считаете это дважды, вы, вероятно, узнаете, что если документ не сохранен, он не может иметь путь к файлу, он просто не существует. Что вам нужно сделать, это сохранить документ, выбрать путь, вставить его в нижний колонтитул и снова сохранить. –

+0

Проблема в том, как узнать, когда произошло сохранение? Нет события DocumentAfterSave. Можно ли каким-то образом подключиться к событию сохранения и сделать там обновление? – Mattias

+0

Как насчет использования 'DocumentBeforeClose', это опция? –

ответ

0

К настоящему времени вы знаете, что вам нужно сохранить как '.docm', если у вас есть код VBA. Не то, что следующее будет делать то, что вы хотите, но это пример того, как увидеть путь сохранения по умолчанию и «последний» путь сохранения для этого документа. Я установил его для отображения разных сообщений (при закрытии), если кто-то делает 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 
Смежные вопросы