【发布时间】:2014-06-09 23:13:16
【问题描述】:
我想澄清一下为什么 VBA 中的每个类(或几乎每个类)(当您滚动浏览对象浏览器时)都有一个 Application 属性。
MSDN 说
当不使用对象限定符时,此属性返回一个 表示 Microsoft Excel 应用程序的应用程序对象。 当与对象限定符一起使用时,此属性返回一个 表示指定对象的创建者的应用程序对象 (您可以将此属性与 OLE 自动化对象一起使用以返回 该对象的应用)。只读。
第一句话很清楚。您使用的没有限定符的托管应用程序可以是支持 VBA 的 MS Office 产品之一。
在 Excel 中 Debug.Print Application = Microsoft Excel
在 Word 中 Debug.Print Application = Microsoft Word
等等...
但是...第二句话对我来说完全不清楚...所以我想无论您从哪里调用.Application,它总是会返回一个对象的主机...
-
那么,VBA 中每个类都有一个
Application属性有什么意义呢?
PS。你总是可以打电话给.Parent => .Parent 去提升等级......不是吗?你可以打电话给Application 没有限定符来得到那个......
我什至无法为此想到一个 SSCCE OLE 方案,所以很抱歉我没有提供示例。 Application 属性(not 与 Application class 混淆)记录不充分,这就是为什么我要求有更多经验的人为我澄清这一点。
一个(嗯,有点)场景,但不确定它是否适用于此处,可能是使用 Interop for Office。例如,当您有一个打开两个文件(一个 Excel 和一个 Word)的外部应用程序时,通过在这两个文件中获取对 Ranges 的引用,您可能能够返回 Microsoft Excel 和 Microsoft Word.. 但这会对任何人都有用吗?嗯..我不理解整个概念吗?
【问题讨论】:
-
可能是因为如果您将
Workbook对象传递给 COM 服务器,该服务器将获得对主机 Excel 实例的访问权限。 OLE 在 OLE 主机中嵌入工作表也是如此。
标签: excel class vba automation ole