Salut,le message et long mais pour les flemmards qui sont méga doué je simplifie ma question en demandant
Est-il possible d'appeler une macro VBA a partir d'un thread fait en delphi. Avec un programme a la con sans thread j'ai essayé c'est possible, mais avec une thread j'arrive pas. Voila, pour les autres voici mon problème en détails :
J'ai créé un thread sous delphi qui va me permettre d'établir une liaison avec Excel avec le composant TExcelApplication. Ma classe s'appelle Excel et mon composant s'apelle Xl. J'ai un constructeur, ou j'initialise ma connexion avec excel, et une procédure Execute qui contient le code à executer une fois la connexion établie. Le probleme c'est que dans la procédure Execute je dois a un moment appeler l'exécution d'une macro vba faite en Excel avec cette commande :
Xl.run('le nom de ma macro'); et la j'ai une erreur d'execution au moment de l'ouverture de la macro (EOlEeXCEPTION AVEC le message : CoInitialize n'a pas été appelé). Le fichier contenant la macro et pourtant bien ouvert sous Excel.
J'ai alors essayé de mettre cette ligne de commande dans une procédure a part que j'ai appelé RunC, et d'appeler cette procédure à partir de mon Excel.Execute avec un synchronize(RunC);
Et là il me met l'erreur suivante : EOleException avec le message :
Un appel sortant ne peut pas être effectué étant donné que l'application répartit un appel entrant synchrone.
En gros je comprend qui ne veut pas me lancer la macro vba parce que ca va entrainer l'apparition d'un autre processus gérer par Excel et indépendant de Delphi et ca va foutre la merde dans mon thread. Mais j'ai absoluement besoin d'executer une macro vba dans un thread Delphi.
Voila je vous remercie tous d'avance pour toutes les réponses que j'espere vous pourrez m'apporter.
Marsh Posté le 20-08-2001 à 16:22:26
Salut,le message et long mais pour les flemmards qui sont méga doué je simplifie ma question en demandant
Est-il possible d'appeler une macro VBA a partir d'un thread fait en delphi. Avec un programme a la con sans thread j'ai essayé c'est possible, mais avec une thread j'arrive pas. Voila, pour les autres voici mon problème en détails :
J'ai créé un thread sous delphi qui va me permettre d'établir une liaison avec Excel avec le composant TExcelApplication. Ma classe s'appelle Excel et mon composant s'apelle Xl. J'ai un constructeur, ou j'initialise ma connexion avec excel, et une procédure Execute qui contient le code à executer une fois la connexion établie. Le probleme c'est que dans la procédure Execute je dois a un moment appeler l'exécution d'une macro vba faite en Excel avec cette commande :
Xl.run('le nom de ma macro');
et la j'ai une erreur d'execution au moment de l'ouverture de la macro (EOlEeXCEPTION AVEC le message : CoInitialize n'a pas été appelé). Le fichier contenant la macro et pourtant bien ouvert sous Excel.
J'ai alors essayé de mettre cette ligne de commande dans une procédure a part que j'ai appelé RunC, et d'appeler cette procédure à partir de mon Excel.Execute avec un
synchronize(RunC);
Et là il me met l'erreur suivante :
EOleException avec le message :
Un appel sortant ne peut pas être effectué étant donné que l'application répartit un appel entrant synchrone.
En gros je comprend qui ne veut pas me lancer la macro vba parce que ca va entrainer l'apparition d'un autre processus gérer par Excel et indépendant de Delphi et ca va foutre la merde dans mon thread. Mais j'ai absoluement besoin d'executer une macro vba dans un thread Delphi.
Voila je vous remercie tous d'avance pour toutes les réponses que j'espere vous pourrez m'apporter.