Powerpoint
Powerpoint et VBA
Pour avoir accès aux objets d'une autre application, donc pour manipuler les informations du serveur, on doit référencer sa bibliothèque d'objets (un fichier .olb) via le menu Outils / Références de l'éditeur VBA. Ce menu est la liste des serveurs OLE enregistrés dans la base de registre de Windows.
La technologie Automation
Automation, appelée également OLE (Object Linking and Embedding) ou OLE Automation, est une technologie qui permet de manipuler les objets d'une autre application directement à partir d'Excel. Pour utiliser la technologie Automation, on doit définir dans le code VBA une variable objet associée aux objets de type application.
Pour réaliser notre exemple (Ecrire dans Powerpoint depuis Excel), il faut d'abord sélectionner une référence au module externe Access via le menu Outils / Références de l'éditeur VBA.
On coche l'option Microsoft Powerpoint 12.0 Object Library (11.0 correspond à 2003, 12.0 pour 2007 et 14.0 pour 2010).
Attention, pas d'enregistreur de macro dans Powerpoint ! On peut afficher l'onglet "Développeur" (Fichier/Options) mais sans ce bouton :-(
Ecrire dans Powerpoint depuis Excel
Sub ouvrir_ppt()
Dim monpowerpoint As PowerPoint.Application
Dim mapresentation As PowerPoint.Presentation
Set monpowerpoint = new PowerPoint.Application
Set mapresentation = monpowerpoint.Presentations.Add
' Affiche Powerpoint
monpowerpoint.Visible = msoTrue
' Ajoute une diapo
mapresentation.Slides.Add Index:=1, Layout:=ppLayoutBlank
With mapresentation
'Crée une zone de texte (Shapes.AddLabel)
Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=150, Height:=60)
'insère la valeur de la Cellule A1 dans une zone de texte
Sh.TextFrame.TextRange.Text = Range("A1").Value
End With
End Sub
Dim monpowerpoint As PowerPoint.Application
Dim mapresentation As PowerPoint.Presentation
Set monpowerpoint = new PowerPoint.Application
Set mapresentation = monpowerpoint.Presentations.Add
' Affiche Powerpoint
monpowerpoint.Visible = msoTrue
' Ajoute une diapo
mapresentation.Slides.Add Index:=1, Layout:=ppLayoutBlank
With mapresentation
'Crée une zone de texte (Shapes.AddLabel)
Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=150, Height:=60)
'insère la valeur de la Cellule A1 dans une zone de texte
Sh.TextFrame.TextRange.Text = Range("A1").Value
End With
End Sub