想要 Word 文档对象,但代码默认为 DAO 文档对象

Want Word Document object, but code defaults to DAO Document object

我正在使用 Outlook 和自动化 Word (2010)。

有一个问题,因为代码默认为 DAO 的 Document 对象,但我想使用 Word 的 Document 对象(两个应用程序都有一个 "Document" 对象 - 但不是同一个对象)。

当我为 Document 对象设置 Dim 时,我会看到两个 "Document" 选项,无论我选择哪一个,代码中的结果都是 DAO Document 对象及其成员。

示例

Dim objDoc as Document <--------- Intellisense shows two "Document" Options

objDoc. <------------- Intellisense shows only DAO members (AllPermissions etc) 

我在 Word 中确实有一个 DAO 3.6 对象库的参考集,因为我在其他宏(不是这个)中使用它,所以我不想删除这个库。我有 运行 这些宏之一,它应该关闭数据库并将其设置为空 - 但没有解决问题。

还尝试在主题代码中打开和关闭数据库,如下所示。

Dim db As DAO.DataBase
Set db = OpenDatabase("C:\Users\...........')
db.Close
Set db = Nothing

如何让代码默认为普通的 Word 文档对象。

您只需为 Document 指定库,我会为两者都这样做,而不是假设 DAO 将始终是默认库:

Dim d As DAO.Document
'        ^^^^
Debug.Print d.UserName

Dim e As Word.Document
'        ^^^^^
e.AcceptAllRevisions

当我这样做时,在引用集的情况下,d 的 Intellisense 建议与 e 的不同。

Intellisense 建议和对象库引用发生在您的代码 运行 之前。因此,无论您打开的是数据库还是 Word 文档,您都会得到相同的建议。以防万一,在每个源文件的开头,添加

Option Explicit

这会导致编译器在您尝试使用未声明的变量时报错,这可能有助于您的调试。