【问题标题】:VBA: Mail Merge - Field not found dialogue boxVBA:邮件合并 - 找不到字段对话框
【发布时间】:2015-02-23 09:51:11
【问题描述】:

我一直在编写一个工具,通过 Excel VBA 中的一组 ODBC 表从 SQL 数据库中提取数据,并使用邮件合并和 Word 对象将信息插入到一些预先格式化的报告中。一些报告有一些可能并不总是包含数据的可选字段。在这些情况下,这些可选字段将完全不存在于数据库中。

我的代码被设计成动态的,并使用数据库中的问题详细信息作为字段标题来生成合并信​​息(通过使用 VBA 合并的 CSV 文件)。我的问题源于输出合并文件中缺少选项问题并且 Word 提示用户“删除字段”。我一直在努力寻找一种程序化的方式来代表用户基本上回答这个对话框(这将始终是删除该字段),或者只知道该做什么而不需要询问。

我没有找到一个模块、命令或函数来告诉单词 object 自动清理它,或者任何处理程序以编程方式回答问题。任何帮助将不胜感激。

【问题讨论】:

  • 如果有任何数据丢失,我猜你的 SQL 结果是null。如果您返回 EmptyString 会怎样?有了这个对话框——你有没有尝试过这样的事情:Application.DisplayAlerts
  • 是的,我有。我有一个名为 oWord 的单词应用程序对象,并且我设置了 oWord.DisplayAlerts = wdAlertsNone Null 想法的问题是 SQL 代码只是简单地转储问题并以迭代方式产生结果。没有硬编码可以知道将存在什么问题/答案。它只有邮件合并文档本身包含特定代码(因为最终会有数百个这样的文档来匹配工程师正在使用的检查文档)。

标签: excel vba mailmerge


【解决方案1】:

以防其他人遇到类似问题,这是我解决此问题的方法:

  1. 与其打开数据源,不如打开一个标头源。在我的例子中,headsource 和 data source 是同一个文件。
  2. 将合并字段(.MailMerge.Fields)与文件中的字段(.MailMerge.DataSource.FieldNames)进行比较。找不到时删除每个合并字段 (.delete)。
  3. 正常打开数据源,如果与头文件相同,则将第一条记录设置为 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多