我正在创建一个文档模板,该模板最终将用作客户某些Excel数据的目标。这将面对客户并由除我之外的其他用户处理,因此我需要一个自动化的解决方案。
我正在使用MS Word的CreateDate字段为文档的创建添加日期戳。这仅会在使用模板创建文档时触发,并在“另存为”后重命名基于模板创建的文档。但是,在使用新文件名保存后,您必须手动更新域代码。
我是VBA的业余爱好者,但是具有以下代码来更新字段(来自Greg Maxey):
Public Sub UpdateAllFields()
Dim rngStory As Word.Range
Dim lngJunk As Long
Dim oShp As Shape
lngJunk = ActiveDocument.Sections(1).Headers(1).Range.StoryType
For Each rngStory In ActiveDocument.StoryRanges
'Iterate through all linked stories
Do
On Error Resume Next
rngStory.Fields.Update
Select Case rngStory.StoryType
Case 6, 7, 8, 9, 10, 11
If rngStory.ShapeRange.Count > 0 Then
For Each oShp In rngStory.ShapeRange
If oShp.TextFrame.HasText Then
oShp.TextFrame.TextRange.Fields.Update
End If
Next
End If
Case Else
'Do Nothing
End Select
On Error GoTo 0
'Get next linked story (if any)
Set rngStory = rngStory.NextStoryRange
Loop Until rngStory Is Nothing
Next
End Sub
我知道BeforeSave事件,但是Word没有“保存后”事件,并且我不知道如何触发代码。有人帮忙吗?
您可以通过将命令名称重新用作宏来插入许多Word菜单命令。最简单的方法是执行以下步骤:
Dialogs(wdDialogFileSaveAs).Show
在该命令之后,添加保存后需要运行的命令。
然后,当用户执行另存为时,他们看到对话框并保存文件,然后您的VBA运行。
一旦您有了主意,就不必完成整个过程。只要您知道内置对话框和Word命令的VBA名称,就可以使用相同的模式键入它们。