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

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

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

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

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

using BoDi;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using TechTalk.SpecFlow;

namespace DoclerQAtests
{

    [Binding]
    public class WebDriverSupport
    {
        private readonly IObjectContainer objectContainer;
        private ChromeDriver webdriver;

        public WebDriverSupport(IObjectContainer objectContainer)
        {
            this.objectContainer = objectContainer;
        }

        [BeforeScenario]
        public void InitializeWebDriver()
        {
            this.webdriver = new ChromeDriver();
            objectContainer.RegisterInstanceAs<IWebDriver>(webdriver);
        }
    }
}

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

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

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

本文链接:https://www.f2er.com/3084261.html

大家都在问