尝试使用.net DLL从VBa /如何查询Azure服务总线队列从Excel



您是否试图从MS Office Vba宏中访问。net DLL ?然后你只需要切换视角,使用Visual Studio在Vb.net或c# .net中编写程序,并从那里调用excel库方法。我浪费了很多时间试图从VBa调用。net库-参见下面我的原始消息。用新技术代替旧技术,而不是用新技术代替旧技术。

谢谢你引导我走上正确的道路。

如何使用Visual c#特性访问Office互操作对象(c#编程指南)https://msdn.microsoft.com/en-us/library/dd264733.aspx

-------------------- 原始的呼救声 -------------------------------------

你好,了不起的stackoverflow的人。非常感谢迄今为止我所阅读的所有优秀的QA。现在是我第一个问题的时间了……

我无法弄清楚如何以最优雅的方式从VBa查询Azure服务总线队列。请帮助!我为这件事失眠了……

我所尝试的是编译azuresblite开放源代码库与COM互操作启用,并在VBa中使用。但是它充满了挑战(COM不支持构造函数,静态成员不可见等)。然后,我尝试在Microsoft.ServiceBus.dll上编写一个COM友好的包装器,但这会变得丑陋和复杂,并且在没有Azure SDK的非开发机器上安装Microsoft.ServiceBus.dll会遇到一些困难,而且它的代码密集,很难调试等。

我最新的想法都在周围- Visual Studio for Office 365能满足我的需求吗?(但是这个电子表格中的web应用程序如何帮助我实现优雅的等待/没有CPU使用/当消息队列为空时没有持续刷新?)-用http://exceldna.codeplex.com/写一个Excel插件(它会解决我依赖Microsoft.ServiceBus.dll等的问题吗?)

免责声明:我开发了Excel-DNA库。

你最好在。net中做集成,而不是尝试用VBA来做。你既可以创建一个在Excel内部运行的Excel插件,也可以创建一个从外部驱动Excel的运行程序(可执行程序)。对于您的用例,不清楚哪个更好。

对于使用。net编写的Excel外接程序,您将在Visual Studio中进行开发,但对于外接程序框架有两种选择:

  • VSTO (Visual Studio Tools for Office)——这是内置于Visual Studio中的Office开发框架。你可以制作一个"应用程序插件",并将其安装在你的Excel机器上。这是标准的,但是有一些限制(你不能制作工作表函数,需要管理员权限来安装插件,与特定的Office版本紧密耦合等)

  • Excel- dna——这是一个用。net制作Excel插件的独立框架。它是开源的,比VSTO更轻量级,但仍然可以让你完全访问Excel功能。安装很容易(您只需复制一个文件)。但是没有很好的文献记载。关于Excel-DNA的支持和问题最好在Excel-DNA谷歌组。

对于驱动Excel计算的外部应用程序,您只需使用COM接口向Excel中写入内容,计算并读取结果。如果您在大范围内执行写入和读取操作,而不是逐个单元执行,那么这应该足够快。您可以将其作为一个单独的过程进行管理,因此这听起来对您来说是个不错的计划。你不需要任何特殊的框架,只需要参考Excel的COM互操作库。

这些都不适用于基于web的Excel或任何其他平台版本。您需要在Windows上完整的Excel客户端

这很烦人,我只是在寻找一个解决这个完全相同的问题的概念证明。

考虑到目前为止我所看到的,唯一真正的解决方案似乎是创建一个web服务前端(我们现在称之为微服务吗?),并在excel 2010中使用VBA代码从excel调用web服务然后,您可以为队列编写一个漂亮的小包装器/api,而无需将逻辑放入Excel中,因此它遵循良好的架构实践,只是需要更多的思考(就像所有好的架构一样!)

最新更新