Calling an XLA add-in method (function/sub) when the add-in is not loaded

社会主义新天地 提交于 2019-12-11 16:08:07

问题


I need to call a method that is provided by a third-party XLA add-in via my VBA code.

There are already answers for doing this with a loaded XLL add-in, but the intention is to call the method directly.


回答1:


Based on e.James' answer for calling an XLL add-in, I figured out the right format to use if the Add-in isn't already loaded. You can use Application.Run for calling methods inside an .xla Add-in the following way:

If we assume that the path to our .xla file is C:\Program Files\example.xla and the method we want to call is ExampleMethod expecting one integer parameter, then the call would be as follows:

' Method call without return value
Private Sub XLAExample()
    Application.Run "'C:\Program Files\example.xla'!ExampleMethod", 10
End Sub

' Method call with return value (check if you can declare correct type for return value!)
Private Function XLAExample() As Variant
    XLAExample = Application.Run("'C:\Program Files\example.xla'!ExampleMethod", 10)
End Sub

So you will need to construct a string of the form

"'<ADDIN_PATH>'!<METHOD_NAME>"

for the call and then just append all needed parameters like

Application.Run <PATH_AND_METHOD>, <PARAMETER_1>, <PARAMETER_2>, ...


Unfortunately, I found that CuberChase's answer that declares the method directly like an API call doesn't work with my specific .xla file, maybe it would have needed to be loaded to work.



来源:https://stackoverflow.com/questions/49402128/calling-an-xla-add-in-method-function-sub-when-the-add-in-is-not-loaded

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!