Vba 如何使用包含合并字段的公式创建合并字段

Vba 如何使用包含合并字段的公式创建合并字段,vba,ms-word,mergefield,Vba,Ms Word,Mergefield,我想构建一个mergefields来决定来自两个不同mergefields的数据。 例如,«字段_1»应包含: IF «field_1» > "" "«field_1»" "«field_2»" 我试过以下方法: Sub createField() Dim mergeString As String mergeString = "IF{MERGEFIELD field_1}>"""" ""{MERGEFIELD field_1}""""{MERGEFIELD field

我想构建一个mergefields来决定来自两个不同mergefields的数据。 例如,
«字段_1»
应包含:

IF «field_1» > "" "«field_1»" "«field_2»"
我试过以下方法:

Sub createField()
   Dim mergeString As String
   mergeString = "IF{MERGEFIELD field_1}>"""" ""{MERGEFIELD field_1}""""{MERGEFIELD field_2}"""

   Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, PreserveFormatting:=False
   Selection.TypeText Text:=mergeString
End Sub
同样使用insertFormula:

Sub createField()
    Dim mergeString As String
    mergeString = "IF{MERGEFIELD field_1}>"""" ""{MERGEFIELD field_1}""""{MERGEFIELD field_2}"""

   Selection.InsertFormula Formula:= mergeString
End Sub

但这只是一团乱

不幸的是,这段代码只会将文本作为常规字符串而不是合并字段插入。如果手动在Word中插入字段,可以使用Ctrl+F9键插入大括号,以标记内容是字段而不是常规文本

要将要直接插入Word的字段插入,您需要手动构造字段(使用Ctrl+F9并键入字段名),或者可以使用选项插入带有占位符文本的If语句,然后用所需字段替换占位符。在VBA中创建字段需要遵循相同的过程

子createField() 将显示状态设置为布尔值 showState=ActiveWindow.View.ShowFieldCodes

Dim ifField As MailMergeField
Set ifField = ActiveDocument.MailMerge.Fields.AddIf(Range:=Selection.Range, MergeField:= _
    "Name", Comparison:=wdMergeIfNotEqual, CompareTo:="", TrueText:="FieldIfTrue", _
    FalseText:="FieldIfFalse")
ifField.Select
ActiveWindow.View.ShowFieldCodes = True

With Selection.Find
    .ClearFormatting
    .Text = "FieldIfTrue"
    .Replacement.Text = ""
    .Forward = True
    .Format = False
    .Execute
End With

ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField, Text:="""Name"""

With Selection.Find
    .Text = "FieldIfFalse"
    .Replacement.Text = ""
    .Forward = True
    .Format = False
    .Execute
End With

ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="OtherName"

Selection.Fields.Update
ActiveWindow.View.ShowFieldCodes = showState
端接头