创建Word邮件合并时无法获得匹配的条件。我想要的是根据字段的第一个字母进行匹配。如果第一个字母是K-Z,那么它的值应该是True。
我在Word中有以下内容:
{IF {MERGEFIELD Provider} = "[K-Z]*" "Person1" "Person2"}
不起作用。我试过转义方括号,但是也没有成功。
我在搜索中找不到有用的东西。有人知道怎么做吗?
您不能在Word IF字段中使用正则表达式-甚至不能在Word的查找和替换功能中使用有限的正则表达式。在IF字段中,您得到的只是通配符吗?(匹配任何字符)和*(匹配多个字符)。这些方法也有其局限性。
所以你必须找到另一种方法。一种是列举所有可能性的乏味方式——在这种情况下,你可以使用像
这样的东西{ SET KtoZ 0
}{ IF "{ MERGEFIELD Provider }" = "K*" "{ SET KtoZ 1}"
}{ IF "{ MERGEFIELD Provider }" = "L*" "{ SET KtoZ 1}"
}{...
}{ IF "{ MERGEFIELD Provider }" = "Z*" "{ SET KtoZ 1}"
}{IF { REF KtoZ } = 1 "Person1" "Person2" }
(与M..Y类似的IF字段,其中我放置了"…")。如果你需要处理大小写,你可以添加一个合适的开关到你的MERGEFIELD字段。
另一种方法(取决于您的情况和数据源)可能是在数据源中进行比较。这要求您可以创建一个视图(或者在Access中,一个查询)来执行比较并返回,例如,一个名为KtoZ的字段,或者您可以在SQL中构造查询并在Word VBA OpenDataSource调用中发出查询。在后一种情况下,您的数据源必须使用允许您这样做的SQL方言,并且您的查询必须少于Word VA规定的255/511个字符限制。