Question

J'utilise Turbo Delphi 2006.

La DLL sera appelée à partir d’Excel dans le cadre d’une combinaison VBA / DLL.

La première partie du problème consiste à essayer de savoir comment transmettre à la DLL une référence à la session Excel en cours. La plupart des autres codes que j'ai vus sont ceux qui ont lancé une instance séparée d'Excel, à part celle dans laquelle vous vous trouvez.

J'ai vu du code C ++ qui crée une instance de IDispatch , puis transmet quelque chose à une méthode de l'objet IDispatch, mais ne connaissant pas beaucoup de C ++.

Des idées?

Était-ce utile?

La solution

Ce que vous décrivez s'appelle écrire un complément COM. Vous devez créer une DLL d'automatisation et implémenter le IDTExtensibility2 . Vous recevrez ensuite l'interface Application d'Excel en tant que paramètre de la méthode OnConnection .

Vous devrez également vous inscrire votre DLL en tant que complément afin qu'Excel le charge automatiquement.

MODIFIER : vous avez peut-être envie de jeter un coup d'œil à Add-in Express . Leur structure et leurs composants facilitent la création d’add-in Office. Vous n'aurez certainement pas à vous soucier des détails de IDTExtensibility2 . Tout cela a un prix (bien justifié), cependant.

Autres conseils

Delphi est livré avec un ensemble de contrôles ActiveX permettant un accès complet à Excel et aux autres applications Office. Ils doivent être sur le serveur " Servers " onglet de la palette d'outils.

S'il n'y en a pas, sélectionnez Composants | Installer des packages, faites défiler la liste jusqu'à la fin et sélectionnez le bon package.

Dans une installation par défaut, ils doivent être appelés:

Exemples de composants wrapper Microsoft Office Automation Server

et il devrait y en avoir un pour XP et Win2k. Les XP fonctionneront pour Vista.

Maintenant que si si vous voulez automatiser Excel.

Si vous souhaitez simplement ajouter des fonctionnalités à Excel à l'aide de Delphi, nous vous conseillons d'utiliser un objet COM, car je soupçonne qu'Excel accepte très bien les objets COM. Sinon, vous pouvez créer une DLL directe et l'utiliser de la même manière qu'Excel utilise n'importe quelle autre DLL.

Je ne connais pas grand chose à Office, mais je suppose que vous devriez utiliser COM / ActiveX. Ensuite, vous obtenez également votre IDispatch. Voir le profil de href a>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top