1

表示に使用されることもあれば、計算に使用されることもあるデータ ソースからの差し込み印刷データがあります。計算の前に Word で値を変換するにはどうすればよいですか?

たとえば、フィールド「Cash」はデータソースから 100.00CR として取得されます (この場合は負の値を意味します)。ある場所では (CR と共に) 値をそのまま表示する必要があり、差し込み印刷の別の部分では、この値を使用して計算を実行する必要があります。問題は、値の末尾に CR が追加されているため、Word が値を文字列と見なすことです。

計算を行う前に値を変換するマクロを記述できると考えていました。

{ =(ConvertToCalculationValue(110.00) *3)}

しかし、これはうまくいかないようです...データソースのデータを調整せずにこれを行う方法はありますか?

4

1 に答える 1

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" }

金額に続くテキストが地域設定で設定された通貨記号である場合、問題が発生する可能性があります。

ところで、「フィールド言語」内から 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 に答える