可以加载项通信? 连接加载项/加载项依赖项

可以加载项通信?

我有一个Excel添加与API通信。 在该插件中,可以将XML打包的数据作为string接受,并将API的路由作为URL / I作为string接受POST数据:

Function PostApiXmlToXml(XML as String, URL as String) as String 'Post to Url that XML data 'PostApiXmlToXml = the XML response End Function 

问题是有很多不同的路线和function需要。 并不是所有的用户都需要/被授权使用所有的路由。

我要么让每个人都可以访问每个function,但是如果他们试图发送到一个他们没有访问它将会以未经授权的方式回应。

或者有一种方法为连接到主通信添加的每个function添加?

例如,这个单独的加载项具有依赖于第一个的函数:

 Function CalculateSomething(x as double, y as double, z as double) as double Xml = "<x>" + x + "</x>" &_ "<y>" + y + "</y>" &_ "" "" "" "" route = "www.api.com/api/controller/func" CalculateSomething = PostApiXmlToXml(xml,route) End Function 

主要的问题是,用户可以随时select新的function,所以我想让用户尽可能简单地下载另一个可以访问的插件。 未来还有更多function需要添加。

是否有可能或者我会这样做吗?

人们会推荐走VSTO路线吗?(没有任何经验)

是连接到主要通信添加每个function的一种方式?

假设CalculateSomething在一个加载项中,而你的其他函数PostApiXmlToXml在一个单独的加载项的模块1中(我们只是把它称为“MainAddIn.xlam”,它已经安装在用户的机器上)

 Function CalculateSomething(x as double, y as double, z as double) as double Xml = "<x>" + x + "</x>" &_ "<y>" + y + "</y>" &_ "" "" "" "" route = "www.api.com/api/controller/func" CalculateSomething = _ Application.Run("MainAddIn!Module1.PostApiXmlToXml", xml, route) End Function 

请注意,您需要在Run语句中按名称指定VBProject和Module。

要检查插件是否安装,可以使用如下的函数:

 Function IsAddInInstalled(name$) As boolean Dim a Dim ret as Boolean For each a in Application.AddIns if (a.Name = name) then ret = True Exit For End If Next If not ret Then MsgBox "Please install " & name IsAddInInstalled = ret End Function 

决定在哪里调用这个函数是另一回事。 当然,你可以在你的依赖插件中的每个过程中调用它,但可能最好将它放在Workbook_Open过程中,只需要一次:

 Sub Workbook_Open() Call IsAddInInstalled("MainAddIn.xlam") End Sub 

这样,每次用户打开Excel,它都将检查“主”加载项的可用性,如果不可用,则会引发一个消息框。