我正在使用Outlook VBA宏来更新现有的Word文档。 我想用VBA代码更新一些现有表单字段的默认值,但我无法弄清楚如何。
FormFields("fieldName").Result = myNewValue
不起作用:刷新后( Ctrl + A 然后 F9 )将删除写入的值。< / p>
我知道我可以使用自定义文档属性轻松完成,但我会更方便地使用表单字段。
我有什么方法可以更新表单字段的默认值吗?
答案 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