Vba 更新“a”之后的所有字段;另存为;MS Word中的事件?
我正在创建一个文档模板,该模板最终将用作客户某些Excel数据的目标。这将是面向客户的,并由我以外的其他用户处理,因此我需要一个自动化的解决方案 我正在使用MS Word的CreateDate字段来标记文档的创建日期。这只会在使用模板创建文档时触发,并在“另存为”重命名基于模板构建的文档后触发。但是,在使用新文件名保存后,必须手动更新字段代码 我是VBA的业余爱好者,但有以下更新字段的代码(来自Greg Maxey):Vba 更新“a”之后的所有字段;另存为;MS Word中的事件?,vba,ms-word,field,Vba,Ms Word,Field,我正在创建一个文档模板,该模板最终将用作客户某些Excel数据的目标。这将是面向客户的,并由我以外的其他用户处理,因此我需要一个自动化的解决方案 我正在使用MS Word的CreateDate字段来标记文档的创建日期。这只会在使用模板创建文档时触发,并在“另存为”重命名基于模板构建的文档后触发。但是,在使用新文件名保存后,必须手动更新字段代码 我是VBA的业余爱好者,但有以下更新字段的代码(来自Greg Maxey): 我知道BeforeSave事件,但Word没有“after save”事件,
我知道BeforeSave事件,但Word没有“after save”事件,我不知道如何触发代码。有人需要帮助吗?通过将命令名作为宏重用,您可以连接到许多Word菜单命令。要做到这一点,最简单的方法是通过以下步骤:
一旦你有了这个想法,你就不必经历整个过程。只要您知道内置对话框和Word命令的VBA名称,就可以使用相同的模式键入它们。感谢您的提示,这看起来对其他宏很有用,但我不知道。不幸的是,当我测试它时,它不起作用-我仍然需要在“另存为”之后手动更新字段。这可能是因为对话框没有触发实际的保存事件?有什么想法吗?关闭对话框会触发另存为。请发布您用于更新字段的当前代码。好的,请为回复延迟道歉。因此,只要我通过单击“开发人员”选项卡中的“运行宏”来触发它,代码就可以完美地工作——它会打开“另存为”对话框,然后在保存时运行代码。但是,当我执行普通文件>另存为过程时,没有字段更新。我的代码与我在原始文章中发布的代码完全相同,添加了对话框(wdDialogFileSaveAs)。在开头显示行。再次感谢你这是我用过很多次的好方法。也许您可以按照我发布的步骤来查看对话框语句是否有所不同,而不是将其添加到现有代码中。这是微软关于这个主题的页面:澄清——我使用的是Word 2013。我确实按照书面说明完成了您的步骤,并将按照您的步骤从头开始重试
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
Dialogs(wdDialogFileSaveAs).Show