想要 Word 文档对象,但代码默认为 DAO 文档对象
Posted
技术标签:
【中文标题】想要 Word 文档对象,但代码默认为 DAO 文档对象【英文标题】:Want Word Document object, but code defaults to DAO Document object 【发布时间】:2017-06-15 23:05:04 【问题描述】:我正在使用 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 文档对象。
【问题讨论】:
“代码默认使用 DAO 选项”到底是什么意思?你看到什么问题?显示您正在编写的代码以及问题出现的位置。 我已经编辑了这个问题,希望现在更清楚了。Dim objDoc as Word.Document
谢谢,从技术上讲,下面的答案很快就来了,所以接受了
【参考方案1】:
您只需要为 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
这将导致编译器在您尝试使用未声明的变量时给您错误,这可能有助于您的调试。
【讨论】:
以上是关于想要 Word 文档对象,但代码默认为 DAO 文档对象的主要内容,如果未能解决你的问题,请参考以下文章