J'ai utilisé fréquemment la commande de macros Excel à partir d'une application VB6. J'ai rencontré des difficultés lorsque plusieurs versions d'Excel cohabitaient sur l'ordinateur utilisant l'application VB6. Après un contact auprès de la hot line Microsoft, j'ai résolu le problème lié aux versions en précisant la version Excel active par défaut sur l'ordinateur utilisateur.
Pour faire fonctionner les macros Excel à partir d'une application VB6 il faut :
1 - Que Excel.exe soit présent sur l'ordinateur où est installé l'application VB6.
2 - Dans le menu "Projet", sélectionner "Références", puis "Microsoft Excel"
3 - Dans le module qui va faire appel à l'application Excel, déclarer les objets :
- Dim XLApp as Excel.Application, XLWb as Excel.Workbook, XLWs as Excel.Worksheet
Set XLApp=CreateObject("Excel.Application.x")
Dans cette instruction, "x" désigne le numéro de la version d'Excel, la fonction suivante permet de déterminer celle qui existe sur l'ordinateur qui utilise l'application vb6:
Public Function GetXLVersion() As String
'***********************************************************
'Cette procédure recherche la version de l'application Excel
avant de créer un objet spécifique.
'***********************************************************
Dim XLApp As Excel.Application
Set XLApp = CreateObject("Excel.Application")
GetXLVersion = left(XLApp.Version, InStr(1, XLApp.Version, ".") - 1)
XLApp.Quit
Set XLApp = Nothing
End Function
GetXLVersion permet de fournir la chaine "x", l'instruction précédente peut s'écrire :
Set XLApp=CreateObject("Excel.Application." & GetXLVersion)
Ensuite selon le cas :
Set wbXL = XLApp.Workbooks.Add(xlWBATWorksheet)
ou
Set wbXL = XLApp.Workbooks.Open(sFileXL) 'où sFileXL désigne le nom du fichier
Puis activation ou création d'un objet Worksheet, etc...
Le conseil donné par "Prince charmant" d'enregistrer automatiquement la macro sous Excel est tout à fait recommandé. Mais, il faut savoir que l'enregistrement automatique va fournir un grand nombre d'instructions inutiles, ensuite, il faut simplifier ce code avec discernement.
4 - Toujours fermer les objets à la fin du code, sinon, il y aura des instances d'Excel ouvertes et invisibles à l'écran qui vont provoquer des disfonctionnements de cette dernière application. Le code pour fermer est :
Set XLWs=Nothing 'Suppression de l'objet Worksheet, il n'y a pas de commande de fermeture
XLWb.Save ou XLWb.SaveAs sFileXL 'Enregistrement du classeur
XLWb.Close 'Fermeture du classeur
Set XLWb=Nothing 'Suppression de l'objet classeur
XLApp.Quit 'Fermeture de l'application
Set XLApp=Nothing 'Suppression de l'objet application
5 - Le pack d'installation :
Pour les version 8 et 9 d'Excel (Excel 97 et Excel 2000), le pack d'installation récupère la bibliothèque d'objet Excel8.olb ou Excel9.olb (624 Ko), au delà il veut ajouter Excel.exe (8 Mo environ) au pack d'installation ce qui ne me parrait pas très recommandé.
|