2013-09-15 2 views
1

У меня есть данные для слияния данных из источника данных, который иногда используется для отображения и иногда используется для расчета. Как я могу заставить Word преобразовать значение перед вычислением?слово форматирование данных слияния mail

Например, поле «Наличные деньги» исходит от источника данных как 100.00CR (что в данном случае означает отрицательное значение). Мне нужно отобразить значение как в одном месте (с CR), в другой части слияния мне нужно выполнить вычисление с использованием этого значения. Проблема в том, что Word считает, что значение является строкой из-за того, что CR добавлен в конец значения.

Я думал, что я мог бы написать макрос для преобразования значения до делать вычисления, например,

{ =(ConvertToCalculationValue(110.00) *3)} 

, но это не похоже на работу ... Любые идеи, как я могу сделать это без настройка данных в источнике данных?

ответ

2

В ситуации, когда у вас есть номер с последующим текстом, вы должны быть в состоянии сделать это:

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

где вы пишете имя вашего поля слияния вместо «theamount»

(Как обычно, все {} должны быть специальными скобками кода, которые вы можете вставить с помощью ctrl-F9 в Windows Word).

Если вам нужно проверить, является ли или не заканчивается «CR» «theamount», вы можете использовать

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

Вы можете столкнуться с проблемами, если текст после суммы случается символ валюты устанавливается в ваши региональные настройки.

BTW, нет (практического) способа вызова макросов/функций Word VBA из «языка поля». В общем, лучше всего, чтобы попытаться гарантировать, что источник данных имеет свои данные в формате (ы), что потребности слияния, но ...

  1. Если источник данных понимает SQL (например, Access, Excel и текст данные источники, подключенные через OLEDB или ODBC, понимают Jet SQL), вы можете использовать параметр SQLStatement метода OpenDataSOurce Word VBA для преобразования данных в . Но будьте осторожны, вы получите абсолютный максимум 511 символов SQL для этого.
  2. Если источник данных не понимает SQL (или только понимает сырого диалекте, что слово реализует внутренне), в некоторых обстоятельствах вы можете использовать поле DATABASE, подключенное к Jet .mdb применять встроенный в Access VBA функции для ваших данных
  3. «Утвержденный» метод заключается в использовании событий MailMerge Word для изменения данных, обычно вставляя данные, задавая переменные документа и используя поля {DOCVARIABLE}.
+0

Да. Кажется, это работает. В шаблоне я задал переменную как предложено и могу использовать ее для вычисления. {SET X {MERGEFIELD Cash}} {= 10/X} , кажется, дает мне правильный ответ. благодаря – 0909EM

Смежные вопросы