我想从Excel 2013订阅RabbitMQ消息队列.
最终目标是允许在Excel中处理MQ消息中包含的数据,并允许Excel通过RabbitMQ消息队列发送格式化消息.
这可能吗?
从消息队列发送的消息由7个字段组成,每个字段由a分隔;符号 – 但是消息在消息队列中作为一个字符串发送…
例如“文本;号码;号码;号码;文本,文本,时间戳”
我希望能够将上面的原始邮件拆分为Excel 2013中的格式化单元格.
可以这样做吗?
我的编码经验有限,我正在努力学习,如果这是一个“愚蠢”的问题,请原谅我.
任何指针都会非常感激,例如可以通过VBA代码或Excel加载项完成吗?
提前致谢…
最佳答案 首先,坏消息:没有简单的方法可以做到这一点.
现在,好消息是:如果你真的想要,你可能至少可以通过两种不同的方式来做到这一点.
免责声明我没有测试任何东西,不能保证它会起作用,而你(可能)需要升级你的编码技能才能达到你想要的效果.如果我有像你这样的要求,这些只是我会探索自己的想法,并且应该给你一些指导以便开始.它们不一定是好的或功能性的.
有多种方法可供探索,以达到您的目的:
>在.NET中编写Excel插件以实际使用/发布到队列.这实际上可能是最简单的解决方案,但它需要Visual Studio和一些.NET知识.一些很好的入门资源:
https://msdn.microsoft.com/en-us/library/bb157876.aspx和永远如此优秀的https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html.
>优点:可能是最简单的解决方案
>缺点:您最终可能会遇到与当前要求相关的插件,并且在规格更改时必须更新您的插件
>利用.NET中的COM Interop为RabbitMQ的.NET客户端库编写一个包装器DLL.如果你从未完成.NET,这种方法可能不合适,因为它将涉及编组数据类型和函数指针.如果您选择此(困难)路径,则需要更多指示:Easiest way to make .NET DLL visible to COM?.然后,您可以通过将生成的DLL添加到VBA项目中,将COM包装器导入任何Excel / Office项目.
>优点:您可以创建一个通用包装器,将RabbitMQ公开给Excel VBA,并在任何其他基于Excel的项目中重复使用它
>缺点:学习曲线会很陡峭.
>在RabbitMQ服务器上使用STOMP adapter(如果您有可用的选项,这取决于您的设置/系统管理员可能会或可能不会),并在VBA中编写您自己的实现.这有点硬核,但没有任何.NET巫毒,但你需要一个名为MSWINSCK.OCX的特殊ActiveX控件,以及一些事件处理. StackOverflow在这里有一个问题,答案很合适:MSWinsock.Winsock event handling in VisualBasic
>优点:再一次,您可以创建可重用的代码(通过可以在其他项目中导入的类)
>缺点:您必须实现协议,它取决于ActiveX控件.还需要使用RabbitMQ适配器,您可能无法在上下文中使用它.
对不起,我无法提供真实的代码,告诉你如何处理这些,但正如你现在可能已经猜到的那样,所有解决方案都意味着相当多的工作.至少,你知道在哪里看……