Je travaille actuellement sur une macro Excel qui me permet d'importer et traiter toute une série d'information provenant d'une autre feuille excel. Jusque là rien de bien sorcier. La partie traitement tourne sans problème.
Le problème c'est que le fichier excel contenant les données à traiter est ouvert par un programme qui à chaque fois, démarre une nouvelle instance excel. Du coup, je ne sais pas comment faire. A mon avis il faut passer par du VB "pur" mais je n'ai pas les connaissances pour et, après 3 heures à chercher, je n'y arrive pas...
Quelques questions du coup :
- est-ce qu'on peut détecter, recenser et manipuler plusieurs instances excel simultanément, sans conflit ? si oui, comment ?
- est-ce que les objets workbooks et worksheets sont "distingables" entre les différentes instances ? si oui, comment ?
Je suis preneur de quelques pistes pour m'orienter dans ma recherche de solution
est-ce qu'on peut détecter, recenser et manipuler plusieurs instances excel simultanément, sans conflit ?
Oui.
Citation :
si oui, comment ?
En VB "pur". A ma connaissance, il n'existe pas de collections des instances d'Excel.
Citation :
est-ce que les objets workbooks et worksheets sont "distingables" entre les différentes instances ?
Oui.
Citation :
si oui, comment ?
Oui. Si on connaît ces instances, pas de problème.
L'instance d'Excel en cours est pointée par l'objet Excel.Application. Un classeur est un élément de la collection Excel.Application.Workbooks. Un classeur connaît son application : thisWorkbook.Application.
Soit tu ne connais pas ce nom. Et là, c'est du VB "pur". Utilise EnumWindows pour récupérer le handle des instances d'Excel. Puis utilise AccessibleObjectFromWindow pour en faire des objets utilisables en VB.