word邮件合并数据格式

时间:2013-09-15 18:42:17

标签: vba ms-word mailmerge

我有一些来自数据源的邮件合并数据,有时用于显示,有时用于计算。如何在计算之前让Word转换值?

例如,字段“Cash”来自数据源100.00CR(在这种情况下意味着负值)。我需要在一个地方(使用CR)显示值,在邮件合并的另一部分我需要使用此值执行计算。问题是Word认为该值是一个字符串,因为CR附加在值的末尾。

我以为我可以编写宏来在计算之前转换值,例如

{ =(ConvertToCalculationValue(110.00) *3)}

但这似乎不起作用......如果不调整数据源中的数据我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

如果您有一个数字后跟文本,您应该可以这样做:

{ SET X { MERGEFIELD theamount } }{ =X*3 }

您在其中写下合并字段的名称而不是“theamount”

(像往常一样,所有{}都必须是可以在Windows Word中使用ctrl-F9插入的特殊字段代码括号。

如果您需要测试“theamount”是否以“CR”结尾,您可以使用

{ IF "{ MERGEFIELD theamount }" = "*CR" "it ends with CR" "it doesn't end with CR" }

如果金额后面的文字恰好是您的区域设置中设置的货币符号,则可能会遇到问题。

BTW,没有(实用的)方法从“Field语言”中调用Word VBA宏/函数。一般来说,最好尽量确保您的数据源具有合并所需格式的数据,但是......

  1. 如果数据源了解SQL(例如Access,Excel和文本数据) 通过OLEDB或ODBC连接的源可以理解Jet SQL) Word VBA的OpenDataSOurce方法的SQLStatement参数 一些数据转换。但要注意,你得到绝对最大值 用于执行此操作的5.1个字符的SQL。
  2. 如果您的数据源不理解SQL(或只了解SQL 在某些情况下,Word在内部实现的粗俗方言 您可以使用连接到Jet .mdb的DATABASE字段的情况 将内置的Access VBA功能应用于您的数据
  3. “已批准”方法是使用Word的MailMerge事件进行修改 数据,通常通过设置文档变量插入数据 并使用{DOCVARIABLE}字段。