【问题标题】:Trouble with Mail Merge IF field and VBA邮件合并 IF 字段和 VBA 出现问题
【发布时间】:2015-02-26 04:33:38
【问题描述】:

我有一个连接到 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一个,是怎么输入的?你输入的时候有没有按Ctrl+F9?

标签: vba ms-word mailmerge


【解决方案1】:

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

我还发现您可以通过使用 DOCVARIABLE 或 REF 域代码在 Word 邮件合并文档中使用 VBA 代码。

对于遇到此问题的其他人:

像这样添加一个文档变量:

{DOCVARIABLE MyVariable}

或像这样的书签参考:

{REF MyBookmarkReference}

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

在项目中(项目名称),例如项目(MailMergeDemo) 在“Microsoft Word 对象”下 双击“此文档”

并输入以下代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    相关资源
    最近更新 更多