Excel VBA中的Application.Windows()和Excel.Windows()之间有什么区别?
基本上,我应该何时使用Application.Windows()以及何时使用Excel.Windows()?任何代码示例都更可取。Excel VBA中的Application.Windows()和Excel.Windows()之间有什么区别?,excel,vba,Excel,Vba,基本上,我应该何时使用Application.Windows()以及何时使用Excel.Windows()?任何代码示例都更可取。Excel.Windows()允许您对其进行写入[1],而根据文档,Application.Windows()是只读的[2] 除了应用程序版本的只读区别之外,它们是相同的。因此,如果您只是在读取属性,请使用应用程序版本,如果您需要更改某些内容,请使用Excel版本。Excel库中有名为Windows和Application的类。然后Excel.Windows是类Win
Excel.Windows()
允许您对其进行写入[1],而根据文档,Application.Windows()
是只读的[2]
除了
应用程序
版本的只读区别之外,它们是相同的。因此,如果您只是在读取属性,请使用应用程序版本,如果您需要更改某些内容,请使用Excel
版本。Excel
库中有名为Windows
和Application
的类。然后Excel.Windows
是类Windows
的完全限定名。类Application
具有名为Windows
的属性,该属性返回所有工作簿中的窗口集合
因此,当您要引用类Windows
时,可以使用Excel.Windows
,当您要引用Windows对象时,可以使用Application.Windows
属性。嗯
在对象浏览器中,我们可以看到它:
命名有问题。类
Windows
的名称和属性Windows
是相同的。以下所有代码示例都使用Windows
属性引用相同的窗口对象集合:
Dim eaw As Excel.Windows
Dim aw As Excel.Windows
Dim ew As Excel.Windows
Set eaw = Excel.Application.Windows
Set aw = Application.Windows
Set ew = Excel.Windows
代码Set aw=Application.Windows
和Set ew=Excel.Windows
是相同的,因为许多返回最常见对象的属性和方法都可以在不使用应用程序
对象限定符的情况下使用。可以在没有应用程序对象限定符的情况下使用的属性和方法被视为global
,对于Windows
也是如此
总之:
- 当声明类型为
的变量时,如果将完全限定名(例如Excel.Windows
,则不会犯任何错误Dim wnds)作为Excel.Windows
- 当提及窗口对象的集合时,由您选择哪种方式,以下所有内容都是等效的(返回相同的集合)
,Set eaw=Excel.Application.Windows
,Set aw=Application.Windows
。注意:根据my Excel 2007的对象浏览器,此集合是只读的Set ew=Excel.Windows
。尝试从.Net
自动化Office。如果你是一个网络新手,你将面临地狱自动化它。VBA for MAC就是我所说的“一团糟”…主要是因为事情没有按我期望的方式运行而感到沮丧…
,因此我在之前的评论…如果你知道你今天要做什么…
如果我使用服务器和web,当事情不顺利的时候,我一定要面对挫折,但这并不意味着事情一团糟。偶尔我会遇到一些人,他们会说“VBA一团糟”(无意冒犯),但这真的让我很生气……)