使用VBA更新Word文本表单字段的默认值

时间:2018-02-08 16:21:44

标签: vba ms-word word-vba

我正在使用Outlook VBA宏来更新现有的Word文档。 我想用VBA代码更新一些现有表单字段的默认值,但我无法弄清楚如何。

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

我知道我可以使用自定义文档属性轻松完成,但我会更方便地使用表单字段。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

当您执行 Ctrl + A F9 时,您的表单字段正在丢失其结果这一事实表明您的文档没有& #39;填写表格&#39;保护适用。在这种情况下,您可以使用:

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