1

MailMerge フィールドを含むドキュメントがありますが、datasource->mailmerge のアイデア全体を使用したくありません。代わりに、Autonew() で UserForm を提示し、ユーザーにフィールドにデータを入力するように求めています。

その理由は、このドキュメントは 1 行のデータと "マージ" するためであり、ユーザーに 1 行のデータ ソース処理全体を行うよう求めるのは時間の無駄だからです。

私は DocVariables を使用した実用的なソリューションを持っていますが、ほとんどの人はそれが正しい方法であると確信していますが、このクライアントは、ソースドキュメントでメールマージ変数 (<<1>> など) を「見る」というアイデアが好きです。 . 彼らは、Alt-F9 を使用してコードを表示し、DocVariables を確認できることを知っていますが、MergeFields を使用したいと主張しています。

DocVariables を使用して、次のようにします。これは機能するので、正しい考えを持っていること、およびコードの残りの部分が正常に機能することがわかります。

ActiveDocument.Variables("varSurame").Value = .txtSurname

ただし、マージフィールドで同じことを行う方法を試すことはできません。以下のようなことをしたいです(ただし、設定する「値」プロパティはありません)。

ActiveDocument.MailMerge.Fields("Surname").value = .txtSurname

.text プロパティは読み取り専用なので、使用できません。

以下は、「ブックマークが定義されていません」というエラーをレンダリングします。

ActiveDocument.MailMerge.Fields("Surname").Code.Text = .txtSurname

データソースを使用せずに差し込み印刷フィールドの値をプログラムで変更する方法についてのアイデア。

4

2 に答える 2

3

何かのようなもの:

Dim f as Word.Field

For Each f in ActiveDocument.Fields

  If f.Type = wdFieldMergeField Then

    ' you will either need to extract the name of the field from f.code here
    ' (roughly speaking, you should expect to find
    ' MERGEFIELD<white space><optional double quote>fieldname<optional double quote><white space><possible switches>
    ' or you could iterate through a list of field names and use instr to look for each name
    ' then

    f.Result.Text = "the text you want"
  End If
Next ' f
于 2013-04-16T19:02:13.057 に答える
1

VBA を介して Access から変更できる DocVariable フィールドが必要な Word ドキュメントがありました。私も差し込み印刷フィールドを「見たい」と思っていました。最初に DocVariable フィールドを含むドキュメントを作成した場合 (たとえば、挿入>>クイック パーツ>>フィールドと DocVariable フィールドの挿入)、それらは非表示になるか、長いフィールド コード全体が表示されます。という名前のフィールドがFNAMEありDONATION、ドキュメントとして誰かの寄付に感謝する手紙があるとします。

最終的なドキュメントは次のようになります。

...100 ドルの寄付をありがとう、ボブ。そうなる...

DocVariable フィールドを使用すると、次のようになります。

... のご寄付ありがとうございます。そうなる...

またはこのように:

...{ DOCVARIABLE "FNAME"} 様、{ DOCVARIABLE "DONATION"} の寄付をありがとうございました。そうなる...

DocVariable フィールドに `* MERGEFORMAT' のようなものが含まれている場合は、さらに長くなる可能性があります。ばかげているかもしれませんが、差し込み印刷フィールドを「見たい」という好みはよくわかります。

...«FNAME» 様、«DONATION» の寄付をありがとうございます。そうなる...

私がそれを機能させる方法はこれでした:

  1. 差し込み印刷フィールドを含むドキュメントを作成します。フィールドを追加するには、接続するための偽の Excel ファイルまたはデータベースを作成する必要がある場合があります。これを行うと、文書内の差し込み印刷フィールドが「表示」されます (例: «FNAME»)。
  2. フィールド コードを切り替えて (alt-F9)、 が表示されるようにします{ MERGEFIELD "FNAME"}
  3. 各差し込み印刷フィールドについて、「MERGEFIELD」を「DOCVARIABLE」に置き換えます。のようにその上にタイプするだけ`{ DOCVARIABLE "FNAME"}です。
  4. フィールド コードをもう一度切り替えます (alt-F9)。これは差し込み印刷フィールド (例: `«FNAME»') のように見えますが、VBA では DocVariable フィールドのように使用できます。

実際には、1 つの差し込み印刷フィールドを挿入し、それをコピーして貼り付けるだけで、別のフィールドの名前を変更できることに注意してください。DocVariable フィールドを挿入するだけでは存在しない、これを行うとコピーされる差し込み印刷フィールドに何かが隠されているに違いありませんが、それが何であるかを理解できませんでした。したがって、これは間違いなく回避策ですが、私にとってはうまくいきました。差し込み印刷フィールドを「見る」だけでなく、VBA の DocVariable フィールドのように使用することもできます。

于 2013-12-28T02:00:50.500 に答える