Ouverture d'Excel depuis PowerPoint
Bonjour,
Le sujet a déjà été abordé partiellement dans différentes discussions.
Je vous propose une solution qui marche chez moi et à mon travail, c'est à dire sous PC et Mac (via Parallels), office 2003.
Les routines que je vous propose permettent de passer la main à Excel que celui-ci soit déjà ouvert ou non et que le fichier cible soit lui aussi ouvert ou fermé. Bref cela marche quelque soit l'état d'Excel.
Merci de me faire vos commentaires.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| Public xlApp As Excel.Application
Public xlBook As Excel.Workbook
Public xlsheet As Excel.Worksheet
Sub Ouv_Excel(Bidon)
'__________________
'
' Routine qui vérifie qu'Excel est ouvert
' et déclenche l'ouverture si fermé
On Error GoTo Trt_Erreur
Set xlApp = GetObject(, "Excel.Application")
'MsgBox ("Nom xlApp :" & xlApp.Name)
GoTo suite
Trt_Erreur:
'MsgBox ("Erreur")
Nom = ""
Set xlApp = CreateObject("Excel.Application")
Resume Next
suite:
On Error GoTo 0
End Sub
Sub Ouv_Classeur(Chemin_nom, Nom_Fichier)
'________________________________________
'
' Routine d'ouverture d'un fichier Excel
' (si il n'est pas déjà ouvert)
' Vérification de l'ouverture d'Excel
Call Ouv_Excel(Bidon)
' Vérification des classeurs déjà ouverts
N_Wb = xlApp.Workbooks.Count
Deja_Ouvert = False
If N_Wb <> 0 Then
For i_Wb = 1 To N_Wb
Wb_Name = xlApp.Workbooks(i_Wb).Name
'MsgBox (xlApp.Workbooks(i_Wb).Name)
If Nom_Fichier = Wb_Name Then
xlApp.Workbooks(i_Wb).Activate
xlApp.Visible = True
Deja_Ouvert = True
Exit Sub
End If
Next
End If
If Deja_Ouvert = False Then
' Ouverture du fichier
Nom_Long_Fichier = Chemin_nom & "\" & Nom_Fichier
Set xlBook = xlApp.Workbooks.Open(Nom_Long_Fichier)
xlApp.Visible = True
End If
End Sub |
Et cerise sur le gâteau : un petit programme de test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Sub Test()
' Où suis-je ?
Chemin = ActivePresentation.Path
' Ouverture du fichier Excel si fermé
Nom_FichierXLS = "aller_retour_Excel_PPT.xls"
Call Ouv_Classeur(Chemin, Nom_FichierXLS)
' Lancement de la macro Excel
ChaineRun = Nom_FichierXLS & "!O_Messages"
xlApp.Run ChaineRun
End Sub |
Et pour finir, il ne faut pas oublier de cocher la référence à Excel (Microsoft Excel 11.0 Object Library) dans le menu Outils de Visual Basic.
A+
PPz