Question

J'ai écrit un contrôleur de l'appareil (RS-232) et il est utilisé avec succès, mais les utilisateurs veulent afficher les données et contrôler l'appareil (ou communiquer peut-être par mon programme) à partir d'Excel. Je DDE rejeté en option et a constaté que la RDT (IRTDServer) est probablement un bon départ (si aucun moyen d'envoyer les données au « serveur » du client de données en temps réel).

J'ai trouvé ces ressources pour la partie RDT: http://support.microsoft.com/?id=327215 et http://support.microsoft.com/?id=327215

Ceci est une application multi-thread et je l'avais déjà ajouté la possibilité d'avoir plusieurs auditeurs sur le port com pour que je puisse mettre à jour plusieurs clients. Je vais ajouter l'interface COM à l'EXE.

Mais ce que je dois après cela est un moyen de contrôler mes commandes app / mandatement de l'appareil via mon application à partir d'Excel.

Quelle serait la meilleure façon de le faire?

Peut-être une autre interface COM et de l'appeler de VBA ou quelque chose? Je ne suis pas familier avec l'utilisation des scripts à partir d'Excel, donc peut-être quelqu'un peut provice exemple de code ou des liens qui montrent à la fois le code d'un objet COM et le code VB (A?) Qui accompagne?

Gardez à l'esprit que c'est une application C ++ non géré et il ne peut pas être converti en gestion ou C # en ce moment. Alternatives à l'aide de C # sont également les bienvenus, mais c'est une ré-écriture à long terme.

Merci

EDIT J'ai une alternative à l'ajout du support COM dans le EXE existant. Je pense qu'il est plus souple d'ajouter une communication à deux voies (multi plates-formes - peut-être augmenter ou CORBA ou tout simplement IP directement en fonction de mon propre protocole de message)

Un serveur COM (ou deux) peuvent envelopper ce canal de communication - quoi que ce soit. Ce n;. T affecte vraiment ma question du tout - je voudrais encore connaître les options pour contrôler un fichier EXE externe à partir d'Excel

EDIT Ne pas avoir à déployer .NET aux clients est également un gros plus. beaucoup de ces appareils sont sur des PC qui sont assez vieux et ont peut-être NT ou XP sur eux et je n'aiment pas augmenter mon setup / install package de 700KB au ridicule installer .NET taille ...

Était-ce utile?

La solution

Option n ° 1:

Créer un petit serveur COM - assurez-vous que ses interfaces sont adaptées pour les scripts avec le moteur Visual Basic intégré dans Excel. (Par exemple utiliser des types simples et BSTRs).

Ecrire Excel VB macros à (1) ajouter votre propre barre d'outils pour exceller et (2) appelez votre serveur COM.

Vous pouvez également ajouter des boutons et d'autres éléments de l'interface utilisateur à des feuilles et les accrocher-les aux macros VB.

Option n ° 2:

Je me rends compte que vous ne voulez pas utiliser C # - mais l'automatisation de bureau, et de parler à des objets COM est vraiment, vraiment facile en C # avec Visual Studio Tools pour Office (VSTO). Vous shoul vraiment regarder dans cette option - Si fait correctement, il ne doit pas signifier réécrire tout de votre code existant. Il suffit d'utiliser C # et VSTO comme un pont entre Excel et votre serveur RTD. Comme avec VB, son droit froward pour relier des éléments de l'interface utilisateur dans Excel pour C # et puis à votre serveur RTD.

Autres conseils

Appel d'un objet COM à partir de VBA est simple. Cette SO question et ma réponse donner un exemple de la façon de créer un objet COM. L'appel aux méthodes exposées est comme on peut s'y attendre:

object.ExposedMethod(optional params...);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top