1

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

例如,字段“Cash”来自数据源,为 100.00CR(在本例中表示负值)。我需要在一个地方(使用 CR)按原样显示该值,在邮件合并的另一部分中,我需要使用该值执行计算。问题是 Word 认为该值是一个字符串,因为 CR 附加到值的末尾。

我在想我可以编写一个宏来在进行计算之前转换值,例如,

{ =(ConvertToCalculationValue(110.00) *3)}

但这似乎不起作用......有什么想法可以在不调整数据源中的数据的情况下做到这一点吗?

4

1 回答 1

2

在您有一个数字后跟文本的情况下,您应该能够这样做:

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

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

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

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

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

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

顺便说一句,没有(实用的)方法可以从“字段语言”中调用 Word VBA 宏/函数。一般来说,最好尝试确保您的数据源具有合并所需格式的数据,但是......

  1. 如果数据源理解 SQL(例如通过 OLEDB 或 ODBC 连接的 Access、Excel 和文本数据源理解 Jet SQL),您可以使用 Word VBA 的 OpenDataSOurce 方法的 SQLStatement 参数进行一些数据转换。但请注意,您最多可以获得 511 个 SQL 字符来执行此操作。
  2. 如果您的数据源不理解 SQL(或仅理解 Word 在内部实现的粗略方言),在某些情况下,您可以使用连接到 Jet .mdb 的 DATABASE 字段将内置 Access VBA 函数应用于您的数据
  3. “已批准”的方法是使用 Word 的 MailMerge 事件来修改数据,通常通过设置文档变量和使用 { DOCVARIABLE } 字段来插入数据。
于 2013-09-15T22:37:56.250 回答