Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Application.Run是Excel库的成员,而CallByName通常适用于所有VBA?_Excel_Vba_Com_Idispatch_Ole Automation - Fatal编程技术网

为什么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之外),它基于接口的编程范式需要对象。