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

时间:2017-01-30 17:27:04

标签: vba word-vba outlook-vba dao

我正在使用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文档对象。

1 个答案:

答案 0 :(得分:1)

您只需要为Document指定库,我会为两者指定,而不是假设DAO始终是默认值:

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

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

当我这样做时,使用引用集,d的智能感知建议与e的建议不同。

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

Option Explicit

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