Mail Merge IF字段和VBA出现问题

时间:2011-05-26 23:17:06

标签: vba ms-word word-vba mailmerge

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

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

{MERGEFIELD Dealer_Name}

另一个是以下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”吗?

1 个答案:

答案 0 :(得分:0)

我能够让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对象,然后选择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