我有一个非常简单的邮件合并,它连接到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了解更多信息。