Excel et RabbitMQ – Traiter les messages RabbitMQ dans Excel?

Je voudrais m'inscrire à une file de message RabbitMQ depuis Excel 2013.

Le but ultime est d'autoriser datatables contenues dans un message MQ à être traitées dans Excel et d'autoriser également Excel à envoyer un message formaté via une file de message RabbitMQ.

Est-ce possible?

Le message qui est envoyé dans la queue des messages est composé de 7 champs, chaque champ est délimité par a; symbole – mais le message est envoyé sous forme de string sur la queue des messages …

par exemple "text;number;number;number;text,text,timestamp"

Je voudrais pouvoir split le message brut comme ci-dessus, en cellules formatées dans Excel 2013.

Est-ce possible?

J'ai une expérience de encoding limitée et j'essaie d'apprendre, s'il vous plaît, pardonnez-moi s'il s'agit d'une question «stupide».

Des astuces seront très appréciées, par exemple, cela peut-il se faire via un code VBA ou un complément Excel?

Merci d'avance…

Tout d'abord, les mauvaises nouvelles : il n'y a pas de moyen facile de le faire.

Maintenant, les bonnes nouvelles : si vous voulez vraiment, vous pouvez probablement le faire, au less de deux manières différentes.

Disclaimer Je n'ai testé rien, je ne peux pas garantir que cela fonctionnera, et vous (probablement) devrez niveler vos compétences de encoding pour atteindre ce que vous voulez. Ce ne sont que des idées que je voudrais explorer si j'avais des exigences comme la vôtre, et je devrais vous donner quelques conseils pour commencer. Ils ne sont pas forcément bons ou fonctionnels.

Il existe différentes approches à explorer afin de réaliser ce que vous voulez:

  • Ecrivez un complément Excel dans .NET pour consumr / publier réellement dans la queue. C'est peut-être la solution la plus simple, mais elle nécessite à la fois Visual Studio et un peu de connaissances .NET. Quelques bonnes ressources pour démarrer: https://msdn.microsoft.com/en-us/library/bb157876.aspx et la toujours si bonne https://www.rabbitmq.com/tutorials/tutorial-one-dotnet .html .
    • Avantages: probablement la solution la plus simple
    • Inconvénients: vous obtiendrez probablement un addin lié à vos besoins actuels et devra mettre à jour votre addin lorsque les spécifications changent
  • Amenez COM Interop dans .NET pour écrire une DLL wrapper autour de la bibliothèque client .NET de RabbitMQ. Si vous n'avez jamais fait .NET, cette approche peut ne pas être appropriée, car cela impliquera le sortingage des types de données et des pointeurs de fonctions. Quelques conseils supplémentaires si vous choisissez ce path (difficile): le moyen le plus simple de rendre .NET DLL visible pour COM? . Vous pouvez ensuite importer votre wrapper COM dans n'importe quel projet Excel / Office en ajoutant la DLL générée à votre projet VBA.
    • Avantages: vous pouvez créer un wrapper générique qui expose RabbitMQ à Excel VBA et le réutiliser dans tout autre projet basé sur Excel
    • Inconvénients: la courbe d'apprentissage sera raide.
  • Utilisez l' adaptateur STOMP sur votre server RabbitMQ (si vous avez cette option disponible, qui peut ou non être possible en fonction de votre configuration / admin sys), et écrivez votre propre implémentation dans VBA. Il s'agit d'un bit hardcore, mais fonctionne sans aucun voodoo .NET, mais vous aurez besoin d'un contrôle ActiveX spécial appelé MSWINSCK.OCX et d'une gestion des events. StackOverflow a une question avec des exemples de réponses décentes ici: MSWinsock.Winsock Event Management dans VisualBasic
    • Avantages: encore une fois, vous pouvez créer un code réutilisable (via une class que vous pouvez importer dans d'autres projets)
    • Inconvénients: vous devez implémenter un protocole, et cela dépend d'un contrôle ActiveX. Exige également l'utilisation d'un adaptateur RabbitMQ, que vous ne pourrez peut-être utiliser dans votre context.

Je suis désolé que je ne puisse pas fournir un code réel montrant comment vous allez à ce sujet, mais comme vous l'avez probablement déjà deviné, toutes les solutions impliquent beaucoup de travail. Donc au less, vous savez où regarder …