我正在使用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文档对象。
答案 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
这会导致编译器在您尝试使用未声明的变量时给出错误,这可能有助于您的调试。