Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recupération d'un fichier Excel par vba Word

2 réponses
Avatar
michor
Bonjour à tous

J'ai un fichier excel C:\MonFichier.xls qui est ouvert.
Je voudrais pouvoir travailler dans ce fichier par un macro vba Word

j'ai déjà écrit

Dim AppExcel as Excel.Application
Dim xlWbk As Object

' activation d'Excel qui fait apparaître "MonFichier.xls"
With Tasks("Microsoft Excel")
.Activate
.WindowState = wdWindowStateMaximize
End With

Set AppExcel = CreateObject("Excel.Application")
Set xlWbk = AppExcel.Workbooks("C:\MonFichier.xls") me renvoi "indice en
dehors de la plage"!!

Quel est l'erreur?

D'avance merci de votre aide

Michor

2 réponses

Avatar
Gloops
Salut,

michor a écrit :
Set AppExcel = CreateObject("Excel.Application")



L'erreur, c'est que si le fichier est déjà ouvert, la syntaxe de
création de l'objet serait plutôt du style :
Set xlWbk = GetObject("C:MonFichier.xls")
Set xlApp = xlWbk.Application

Je dis ça sans le tester à l'instant, GetObject accepte un deuxième
argument Class, qui en l'occurrence pourrait être "Excel.Workbook", et
où on peut aussi passer une chaîne vide. A tester.

Si le fichier n'était pas ouvert, la syntaxe serait effectivement :
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.OpenWorkbook("C:Fichier.xls")
'attention je cite tout de mémoire
Set xlWbk = xlApp.Workbooks("C:Fichier.xls")


CreateObject crée un objet
GetObject obtient un objet ouvert
Avatar
michor
merci , je teste
Pour la facilité, j'aurais préféré conserver "C:MonFichier" ouvert parce je
souhaite pouvoir
transférer des données de l'un à l'autre.

michor


"Gloops" a écrit dans le message de news:

Salut,

michor a écrit :
> Set AppExcel = CreateObject("Excel.Application")

L'erreur, c'est que si le fichier est déjà ouvert, la syntaxe de
création de l'objet serait plutôt du style :
Set xlWbk = GetObject("C:MonFichier.xls")
Set xlApp = xlWbk.Application

Je dis ça sans le tester à l'instant, GetObject accepte un deuxième
argument Class, qui en l'occurrence pourrait être "Excel.Workbook", et
où on peut aussi passer une chaîne vide. A tester.

Si le fichier n'était pas ouvert, la syntaxe serait effectivement :
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.OpenWorkbook("C:Fichier.xls")
'attention je cite tout de mémoire
Set xlWbk = xlApp.Workbooks("C:Fichier.xls")


CreateObject crée un objet
GetObject obtient un objet ouvert