【问题标题】:Update Word text form field's default value with VBA使用 VBA 更新 Word 文本表单字段的默认值
【发布时间】:2018-02-08 16:21:43
【问题描述】:

我正在处理更新现有 Word 文档的 Outlook VBA 宏。 我想用 VBA 代码更新一些现有表单字段的默认值,但我不知道怎么做。

FormFields("fieldName").Result = myNewValue 不起作用:刷新后(Ctrl+A 然后 F9)写入的值被删除。

我知道我可以使用自定义文档属性轻松完成此操作,但使用表单字段代替对我来说更方便。

有什么方法可以更新表单字段的默认值吗?

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    Result 属性是用户键入的内容,而不是您要查找的内容。

    您需要的是 TextInput.Default 属性。然而,这个问题是它不会显示在文档中,直到字段被更新。这意味着如果您的代码还没有这样做,您将不得不取消对表单的保护。

    Sub ChangeFormFieldDefault()
        Dim doc As word.Document
        Dim ffld As word.FormField
        Dim rngFFld As word.Range
        Dim countFields As Long
    
        Set doc = ActiveDocument
        Set ffld = doc.FormFields("Text1")
        Set rngFFld = ffld.Range
        countFields = doc.Range(doc.content.Start, rngFFld.End).Fields.Count
        ffld.TextInput.Default = "default text"
        'for the following form field protection must be turned off
        doc.Fields(countFields).Update
    End Sub
    

    【讨论】:

      【解决方案2】:

      当您执行 Ctrl+AF9 时,您的表单域正在丢失结果,这表明您的文档没有“填写”应用形式的保护。在这种情况下,您可以使用:

      With ActiveDocument.FormFields(1)
        .TextInput.Default = "Hello world"
        .Result = .TextInput.Default
      End With
      

      或:

      With ActiveDocument
        .FormFields(1).TextInput.Default = "Hello world"
        .Fields.Update
      End With
      

      【讨论】:

        猜你喜欢
        • 2018-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 2016-12-03
        相关资源
        最近更新 更多