在Excel VBA中,Application.Windows()和Excel.Windows()有什么区别?

3

基本上,我什么时候应该使用 Application.Windows(),什么时候应该使用 Excel.Windows()?最好有具体的代码示例。


或许和可能有什么区别? 我认为Excel.Windows和Application.Windows是一样的。 - Storax
2个回答

3
Excel.Windows()可以让你往里面写入内容[1],而根据文档,Application.Windows()是只读的[2]。除了Application版本的只读区别外,它们是相同的。因此,如果您只需读取属性,请使用Application版本,如果需要更改内容,请使用Excel版本。请参考[1][2]

@SiddharthRout 它缺乏许多其他语言拥有的功能,而且与大多数其他语言的操作方式非常不同。我觉得微软最好让您使用 c# 或其他 .NET 语言来进行应用程序脚本编写,因为这些语言以更标准的方式执行操作。Visual Basic 对于非程序员有很多易用性的东西,这对于开发人员来说有点令人沮丧。 - Adam LeBlanc
@AdamLeBlanc - 对不起,?excel.Windows.count?application.Windows.count 都可以在一个新的空白工作簿的 VBA 立即窗口中使用。 - user4039065
1
@AdamLeBlanc:我主要使用Visual Basic。VB.Net/VB6/VBA/VBScript。我已经使用VBA工作超过15年了,所以相信我,当我说VBA不是一团糟时。如果你知道该做什么,使用MS Office应用程序从未如此简单。尝试从“.Net”自动化Office。如果您是dot net的新手,那么自动化它将会很困难。对于MAC的VBA,我会称之为“混乱”。 - Siddharth Rout
@SiddharthRout 或许这是经验问题。我的大部分背景都在服务器和Web方面,所以对我来说这是一个很大的思维转变。然而,我并没有遇到太大的麻烦,主要是因为事情没有按照我预期的方式工作而感到沮丧。 - Adam LeBlanc
1
大多数情况下,我会因为事情没有按照我的预期工作而感到沮丧。因此,在我之前的评论中,我说过:“如果你知道你要做什么……”今天,如果我与服务器和网络一起工作,当事情不顺利时,我肯定会感到沮丧,但这并不意味着它一团糟。偶尔我会遇到那些说“VBA一团糟”的人(无意冒犯),但那真的让我很生气... :) - Siddharth Rout
显示剩余4条评论

3
“Excel”库有名为“Windows”和“Application”的类。然后,“Excel.Windows”是类“Windows”的完全限定名称。类“Application”有一个名为“Windows”的属性,返回所有工作簿中窗口的集合。
因此,当您想引用类“Windows”时,可以使用“Excel.Windows”,而当您想引用窗口对象时,将使用“Application.Windows”属性。希望对您有所帮助。
在对象浏览器中,我们可以看到它: enter image description here
命名存在问题。类的名称 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.WindowsSet ew = Excel.Windows 是相同的,因为许多返回最常见对象的属性和方法可以在不使用 Application 对象限定符的情况下使用。可以在不使用应用程序对象限定符的情况下使用的属性和方法被认为是全局的,这也适用于 Windows

总之:

  • 当声明类型为 Excel.Windows 的变量时,您不会犯任何错误,例如 Dim wnds As Excel.Windows

  • 当引用窗口对象集合时,您可以选择哪种方式,以下所有方式都是等效的(返回相同的集合):Set eaw = Excel.Application.WindowsSet aw = Application.WindowsSet ew = Excel.Windows注意:根据我的 Excel 2007 的对象浏览器,此集合为 只读


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接