首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用包含mergefield的公式创建mergefield

如何使用包含mergefield的公式创建mergefield
EN

Stack Overflow用户
提问于 2015-07-02 07:00:29
回答 1查看 1.1K关注 0票数 2

我想要构建在来自两个不同的mergefield的数据之间作出决定的mergefield。例如,«field_1»应该包含:

代码语言:javascript
复制
IF «field_1» > "" "«field_1»" "«field_2»"

我尝试了以下方法:

代码语言:javascript
复制
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:

代码语言:javascript
复制
Sub createField()
    Dim mergeString As String
    mergeString = "IF{MERGEFIELD field_1}>"""" ""{MERGEFIELD field_1}""""{MERGEFIELD field_2}"""

   Selection.InsertFormula Formula:= mergeString
End Sub

但只是一团糟。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 15:34:14

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

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

子createField() Dim showState作为布尔showState = ActiveWindow.View.ShowFieldCodes

代码语言:javascript
复制
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

结束子对象

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31177611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档