0

SQL サーバー データベースに接続された非常に単純な差し込み印刷があります。

差し込み印刷には 2 つのフィールドがあり、1 つは

{MERGEFIELD Dealer_Name}

もう1つは次のIFフィールドです

{IF {MERGEFIELD Dealer_Name}="Joe" "1" "0"}

ただし、IF フィールドは実行されません。Dealer_Name マージ フィールドは実行され、各ディーラー名または各ページが表示されますが、IF フィールドは次のように表示されます。Dealer_Name}=

また、VBA 関数またはプロシージャを作成し、それを単語の差し込み文書にフィールドまたは差し込みボタンなどとして追加することもできます。

たとえば、次の VBA プロシージャがあるとします。

Public Sub PrintSomeText  
  Selection.TypeText("Hello World")
End Sub

これをマクロか何かとして差し込み文書に追加して、文書に配置された場所の各ページに「Hello World」を印刷することはできますか?

4

1 に答える 1

0

IF フィールド コードを機能させることができましたが、どうすれば機能し始めたのかわかりません。

また、DOCVARIABLE または REF フィールド コードを使用して、Word の差し込み文書で VBA コードを使用できることもわかりました。

この問題を抱えている他の人のために:

次のようにドキュメント変数を追加します。

{DOCVARIABLE MyVariable}

または次のようなブックマーク参照:

{REF MyBookmarkReference}

次に、VBA (Alt+F11) で次の操作を行います。

Project (プロジェクト名) で、例 Project(MailMergeDemo) "Microsoft Word オブジェクト" の下の "ThisDocument" をダブルクリックします。

次のコードを入力します

Dim WithEvents app As Application

Private Sub Document_Close()
  Set app = Nothing
End Sub

Private Sub Document_Open()
  Set app = Application
End Sub

ドロップダウンからアプリ オブジェクトを選択し、app_MailMergeBeforeRecordMerge イベントを選択して、次のコードを入力します。

Private Sub app_MailMergeBeforeRecordMerge(ByVal Doc As Document, Cancel As Boolean)
  Doc.Variables("MyVariable").Value = Doc.MailMerge.DataSource.DataFields(SomeFieldName).Value

  Doc.Bookmarks("MyBookmarkReference").Range.Text = "this is a test"

  Doc.Fields.Update
End Sub

アプリケーション オブジェクトをフックするには、ドキュメントを閉じてから再度開く必要があります。

詳細については、 http://support.microsoft.com/kb/285333を参照してください。

于 2011-05-31T05:20:41.200 に答える