为什么Application.Run是Excel库的成员,而CallByName通常适用于所有VBA?
为什么Application.Run是Excel库的成员,而CallByName通常适用于所有VBA?,excel,vba,com,idispatch,ole-automation,Excel,Vba,Com,Idispatch,Ole Automation,Excel.Application.Run和VBA.Interaction.CallByName似乎都做了类似的事情;即使用字符串名调用方法。据我所知,之所以启用此功能,是因为VBA是一种自动化语言,并使用IDispatch处理其许多对象和内部工作 这与Excel有什么关系(或者确实是PowerPoint.Application.Run)?为什么调用标准模块的成员与调用类模块的成员如此不同?非常相似,但做的事情并不完全相同。Application.Run()做的更多,它还可以查找和执行宏,从范围
Excel.Application.Run
和VBA.Interaction.CallByName
似乎都做了类似的事情;即使用字符串名调用方法。据我所知,之所以启用此功能,是因为VBA是一种自动化语言,并使用IDispatch
处理其许多对象和内部工作
这与
Excel
有什么关系(或者确实是PowerPoint.Application.Run
)?为什么调用标准模块的成员与调用类模块的成员如此不同?非常相似,但做的事情并不完全相同。Application.Run()做的更多,它还可以查找和执行宏,从范围对象查找公式,并执行XLL函数。@HansPassant Ok不知道,但我想我真正感兴趣的是从标准模块调用,为什么这不像从类模块调用那样内置在VBA中?公式和范围的其他内容可以由宿主应用程序单独实现,但我觉得标准模块的调用方法与宿主无关,所以我想知道;是/为什么不是?VBA的核心是高度以COM为中心的。它没有任何类似模块的东西(除了古怪的appobject之外),它基于接口的编程范式需要对象。