【发布时间】:2020-03-13 08:05:42
【问题描述】:
我正在创建一个文档模板,该模板最终将用作客户某些 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 没有“保存后”事件,我不知道如何触发代码。有人帮忙吗?
【问题讨论】: