pipochicoin
XLDnaute Nouveau
Bonjour à tous,
Je rencontre un problème assez simple : une application tierce (un ERP) construit des fichiers Excel et les ouvre. Je souhaite pouvoir les enregistrer via une macro.
Le problème est qu'à chaque création de fichier, celui ci est ouvert dans une nouvelle instance d'Excel, et que je ne parviens pas à l'atteindre pour l'enregistrer via les fonctions habituelles (Workbooks.save)
De mes recherches je vu que pour contourner la séparation d'instances je pouvais utiliser les fonctions GetObject... J'ai essayé sans grand succès, mais le fichier n'étant pas enregistré, celui-ci n'a pas de nom, ni d’extension, ni de répertoire d'accès.
Le point discriminant est que les fichiers s'ouvrent selon la dénomination "Classeur1", puis "Classeur 2", etc... (nom dans la barre de titre de l'application).
J'ai un point de départ de code, me permettant de compter les instances excel ouvertes simultanément.
Je pensais pouvoir me baser sur des objlist(i).Application.Workbooks pour pointer sur ces classeurs, mais sans réussite (Erreur d'exécution '2147217407 (80041001)' / Echec Générique")
Je ne suis pas certain de bien exploiter ces fonctions, l’un d'entre vous pourrait il me permettre d'atteindre ces fameux classeurs ?
Merci d'avance pour votre aide... ci dessous le début du code que je ne parviens plus à faire progresser
Je rencontre un problème assez simple : une application tierce (un ERP) construit des fichiers Excel et les ouvre. Je souhaite pouvoir les enregistrer via une macro.
Le problème est qu'à chaque création de fichier, celui ci est ouvert dans une nouvelle instance d'Excel, et que je ne parviens pas à l'atteindre pour l'enregistrer via les fonctions habituelles (Workbooks.save)
De mes recherches je vu que pour contourner la séparation d'instances je pouvais utiliser les fonctions GetObject... J'ai essayé sans grand succès, mais le fichier n'étant pas enregistré, celui-ci n'a pas de nom, ni d’extension, ni de répertoire d'accès.
Le point discriminant est que les fichiers s'ouvrent selon la dénomination "Classeur1", puis "Classeur 2", etc... (nom dans la barre de titre de l'application).
J'ai un point de départ de code, me permettant de compter les instances excel ouvertes simultanément.
Je pensais pouvoir me baser sur des objlist(i).Application.Workbooks pour pointer sur ces classeurs, mais sans réussite (Erreur d'exécution '2147217407 (80041001)' / Echec Générique")
Je ne suis pas certain de bien exploiter ces fonctions, l’un d'entre vous pourrait il me permettre d'atteindre ces fameux classeurs ?
Merci d'avance pour votre aide... ci dessous le début du code que je ne parviens plus à faire progresser
Code:
Sub test()
Dim strComputer As String
Dim objWMIService As Object
Dim objProcess As Object
Dim objList As Object
Dim appexcel As Excel.Application
'Set objApp = objList.Application
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set objList = objWMIService.execquery("select * from win32_process where name='EXCEL.EXE'")
MsgBox "Nombre d'instances : " & objList.Count
For i = 1 To objList.Count
Set appexcel = objList(1).Application
classeur = appexcel.Workbooks(1)
Next i
Set objWMIService = Nothing
Set objList = Nothing
Set objProcess = Nothing
End Sub