Bonjour à tous,
J'ai un petit problème avec le pilotage d'Excel via un thread.
J'utilise en effet un thread que j'appelle pour lancer une feuille excel et récuperer des données en temps réel.
Le thread est donc sans arret en train de recuperer de la feuille!
Le problème intervient lorsque j'accede à la feuille et que je modifie la valeur d'une cellule. Le thread me renvoie une Ole Exception RPC_E_CALL_REJECTED.
Après m'être renseigné, j'ai essayé de changer l'initialisation du thread en le déclarant multi thread apartment grâce à la ligne:
::CoInitializeEx(NULL, COINIT_MULTITHREADED );
Alors qu'auparavant, j'utilisais ::CoInitialize(NULL). Ca me lève toujours une exception mais cette fois ci le message est RPC_E_SERVERCALL_RETRYLATER.
Donc apparemment le thread aime pas du tout que l'utilisateur touche à son instance d'excel en même temps que lui.
Le problème que lorsque j'utilisais exactement le meme programme dans le main thread, et cela marchait sans aucun soucis.
C'est ce qui me fait croire qu'il existe un moyen d'éviter la levée d'exception, mais n'étant pas un spécialiste de MFC et COM, j'avoue je ne sais pas trop comment faire.
merci de votre aide
Partager