在MS Word中发生“另存为”事件后更新所有字段?

问题描述 投票:0回答:1

我正在创建一个文档模板,该模板最终将用作客户某些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没有“保存后”事件,并且我不知道如何触发代码。有人帮忙吗?

vba ms-word field
1个回答
0
投票

您可以通过将命令名称重新用作宏来插入许多Word菜单命令。最简单的方法是执行以下步骤:

  1. 在Word中,选择Developer> Macros
  2. 宏输入下拉菜单设置为Word命令
  3. 在命令列表中,选择FileSaveAs
  4. Macros in]切换回宏所在的模板。
  5. 单击创建
  6. 按钮。 Word在您的模板中创建一个仅包含以下行的新宏:
    Dialogs(wdDialogFileSaveAs).Show
    

在该命令之后,添加保存后需要运行的命令。

然后,当用户执行另存为时,他们看到对话框并保存文件,然后您的VBA运行。

一旦您有了主意,就不必完成整个过程。只要您知道内置对话框和Word命令的VBA名称,就可以使用相同的模式键入它们。

© www.soinside.com 2019 - 2024. All rights reserved.