ms-word-邮件合并IF字段和VBA出现问题



我有一个非常简单的邮件合并,它连接到SQL服务器数据库

邮件合并有两个字段,一个是

{MERGEFIELD Dealer_Name}

另一个是下面的IF字段

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

但是,IF字段不执行。Dealer_Name合并字段确实执行并显示每个经销商名称或每个页面,但IF字段仅显示为Dealer_Name}=

也可以编写VBA函数或过程,然后将其作为字段或合并按钮或其他内容添加到word邮件合并文档中。

例如,假设我有以下VBA过程

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

我可以把它作为宏或其他东西添加到邮件合并文档中吗?这样它就可以在文档所在位置的每一页上打印出"Hello World"?

我能够让IF字段代码工作,但不确定如何工作,它刚刚开始工作。

此外,我发现您可以使用DOCVARIABLE或REF字段代码在Word邮件合并文档中使用VBA代码。

对于其他有此问题的人:

添加这样的文档变量:

{DOCVARIABLE MyVariable}

或者像这样的书签参考:

{REF MyBookmarkReference}

然后在VBA(Alt+F11)中执行以下操作:

在项目中(项目名称),例如项目(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了解更多信息。

相关内容

  • 没有找到相关文章

最新更新