使用VBA更新Word中合并字段的值
我需要下载一个word文档并编辑它包含的字段,以使用表单中的输入数据生成最终文档 word文档包含许多我需要用新值更新的使用VBA更新Word中合并字段的值,vba,ms-word,mergefield,Vba,Ms Word,Mergefield,我需要下载一个word文档并编辑它包含的字段,以使用表单中的输入数据生成最终文档 word文档包含许多我需要用新值更新的MERGEFIELD和条件。 我尝试循环遍历字段,当mergefield属于我的有效字段列表时,替换该值;但它不适用于条件所包含的合并字段 简单来说,它可以工作: 这是一个很好的例子{MERGEFIELD HerrnFrau}{MERGEFIELD Titel}{MERGEFIELD Nachname} 对于条件不: {IF{MERGEFIELD property}=“yes”
MERGEFIELD
和条件。
我尝试循环遍历字段,当mergefield
属于我的有效字段列表时,替换该值;但它不适用于条件所包含的合并字段
简单来说,它可以工作:
这是一个很好的例子{MERGEFIELD HerrnFrau}{MERGEFIELD Titel}{MERGEFIELD Nachname}
对于条件不:
{IF{MERGEFIELD property}=“yes”{MERGEFIELD HerrnFrau}
更新文档字段以正确更新条件内容的正确方法是什么?删除整个IF字段并在其位置插入数据。但请注意,这种方法不是使用合并字段的正确方法,并且由于某种原因,在您对该字段执行任何操作之前,应先更新字段文档在代码完成后,使用
result.text
写入的值将丢失。最好完全删除字段,并将内容作为静态文本写入它们所在的位置。更好的做法是,因为代码无疑可以将您试图写入{MERGEFIELD property}的内容写入其中,为什么不直接在代码中进行测试,并将整个条件字符串写入文档?使用书签比合并字段更有意义。
Dim objWord As Word.Application
Dim objDoc As Word.document
Dim objField As Word.field
Dim idx As Integer
Dim idxField As Long
idxField = 1
With objDoc
For Each objField In .Fields
' Special case
If objField.Code = " MERGEFIELD hlp_Abs2 " Then
idx = GetIndexValue(objField.Code, AllFields)
objField.result.text = "1"
Else
' Check array with field names
If IsInArray(objField.Code, AllFields) Then
idx = GetIndexValue(objField.Code, AllFields)
objField.result.text = AllValues(idx)
End If
End If
Next objField
End With