[RESOLU]Créer une instance Excel à partir de Word 97 ou 2003

Créer une instance Excel à partir de Word 97 ou 2003 [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 04-03-2006 à 13:08:29    

Bonjour à tout le monde.
 
Je suis dans un fichier Word et sous VBA, je cherche à importer automatiquement un tableau Excel que je dois modifier avant l'exportation vers Word. Je ne suis pas un grand connaisseur mais je pense qu'il faut cocher la case Mircosoft Excel Object Library (Outils/Réréreneces) afin de créer une instance Excel.
 
J'ai aplliqué le code suivant:
Sub Macro()
 Dim xls As Excel.Workbook ' déclaration d'une variable objet de type classeur Excel
 Dim var As Integer
 Set xls = GetObject("non de mon fichier.xls" ) 'instanciation de l'objet (qui devient ici le fichier excel indiqué)
 ' import de données
var = xls.worksheets(1).Range("C2" ).Value
End Sub
 
J'ai lancé ma macro, j'ai vu mon curseur se transformer en sablier (signe qu'une actionn était en cours?) et ma page est resté blanche. J'ai fermé mon fichier Word, je l'ai ouvert et j'ai à nouveau lancé ma macro et j'ai le message d'erreur suivant:
Erreur d'exécution suivie d'une série de chiffres
Erreur Automation
syntaxe Incorrecte
Par ailleurs Set xls = GetObject("non de mon fichier.xls" ) 'instanciation de l'objet (qui devient ici le fichier excel indiqué) est surligné en jaune.
 
Pouvez m-indiquer ce qui ne va pas dans mon code s'il vous plaît?
Merci par avance de votre aide.


Message édité par TAM136 le 19-03-2006 à 16:49:31
Reply

Marsh Posté le 04-03-2006 à 13:08:29   

Reply

Marsh Posté le 04-03-2006 à 18:54:48    

Bonjour,
Effectivement, il faut bien ajouter la référence excel dans le projet Word ( Microsoft Excel X.0 Object Library), X = 8 à 11. Il faut créer une instance excel avant d'ouvrir le fichier, ne pas oublier d'enregistrer le fichier avant de le fermer et enfin décharger les variables. Cela donne par exemple:
 
Sub Macro()
Dim xlAppList As Excel.Application
Dim xls As Excel.Workbook
    ExcelFile = "c:\nom de mon fichier.xls"    'Ne pas oublier le chemin
    Set xlAppList = CreateObject("Excel.Application" ) 'crée une instance excel
    Set xls = xlAppList.Workbooks.Open(ExcelFile, 0, , , "" )  'ouvre ce fichier excel
    Var = xls.Worksheets(1).Range("C2" ).Value
 
        'Routine de lecture et de modification
 
       'penser à refermer le classeur en l'enregistrant si il a été modifié
    xls.Close savechanges:=True
    Set xlAppList = Nothing
    Set xls = Nothing
End Sub
 
Bon courage
Epéna

Reply

Marsh Posté le 04-03-2006 à 21:24:13    

Bonsoir,
 
Merci beaucoup pour ta réponse et pour la peine.
A priori, je n'ai plus de message d'erreur. Je cherche maintenant à compléter ma macro.

Reply

Marsh Posté le 04-03-2006 à 23:27:26    

Bonsoir,
Je suis désolé mais comment savoir si mon fichier Excel s'ouvre bien? En effet pour l'instant, lorsque je lance la macro, tout comme avant de poster mon premier message, j'ai le curseur qui se transforme en sablier et mon cuseur apparaît à nouveau sans que j'ai pu voir mon fichier Excel. Je reste donc sur ma page Word initiale.
Est-ce dû à l'instruction xls.Close savechanges:=True ? J'essaie de compléter ma macro pour avoir la confirmation que mon instance fonctionne bien et surtout parce je souhaite justement modifier ce fichier Excel avant l'exportation dans Word mais pour l'instant je n'y arrive pas.
Un conseil peut-être?
 
Merci

Reply

Marsh Posté le 05-03-2006 à 20:53:36    

Bonsoir,
C'est toutà fait sûr que le fichier excel s'ouvre, à tel point que si on oublie le code pour le fermer et si on veut l'ouvrir par excel, apparaît un message d'ouverture en lecture seule. Par contre si tu souhaites ouvrir et afficher le fichier excel, il faut modifier le code :
 
Sub Macro()
Dim xlAppList As Excel.Application
Dim xls As Excel.Workbook
Dim ExcelFile
    ExcelFile = "c:\nom de mon fichier.xls"    'Ne pas oublier le chemin
    On Error Resume Next
    Set xlAppList = GetObject(ExcelFile, "Excel.Application" )
    If xlAppList Is Nothing Then
      Set xlAppList = CreateObject("Excel.Application" ) 'crée une instance excel si n'est pas ouvert
    End If
    On Error GoTo 0
    xlAppList.Visible = True    'rend visible l'application
   
    Set xls = xlAppList.Workbooks.Open(ExcelFile)  'ouvrre ce fichier excel
    xls.Activate    'active le classeur
 
    Var = xls.Worksheets(1).Range("C2" ).Value
 
    'Routine de lecture et de modification
End Sub
 
Bon courage
Epéna

Reply

Marsh Posté le 08-03-2006 à 16:01:45    

Bonsoir,
 
YES!! Impeccable! Merci encore (ça fait plusieiurs fois que tu viens à mon secours).
 
@+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed