想要 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 文档对象的主要内容,如果未能解决你的问题,请参考以下文章

Mac系统上如何添加文本文档

利用JS生成博文目录及CSS定制博客

自定义 Word 默认的 Normal.dotm 模板更改 Word 默认字体更改 Word 默认样式(16)

新罗马字体怎么设置

两个word文档如何比对内容是不是一致

如何将Word中的嵌入式图片批量更改为非嵌入式?