En aquest tema, aprendrem com utilitzar VBA per automatitzar i controlar PowerPoint des d'Excel. Això pot ser molt útil per crear presentacions dinàmiques, actualitzar contingut automàticament o generar informes visuals.

Objectius del tema

  • Comprendre com establir una connexió amb PowerPoint des de VBA.
  • Aprendre a crear i modificar presentacions de PowerPoint utilitzant VBA.
  • Automatitzar tasques comunes com afegir diapositives, inserir text i imatges, i aplicar format.

  1. Establir una connexió amb PowerPoint

1.1. Referències necessàries

Per interactuar amb PowerPoint des de VBA, primer hem d'afegir una referència a la biblioteca d'objectes de PowerPoint.

  1. Obre l'Editor de VBA (Alt + F11).
  2. Ves a Eines > Referències.
  3. Cerca i selecciona Microsoft PowerPoint xx.x Object Library (on xx.x és la versió de PowerPoint que tens instal·lada).

1.2. Crear una instància de PowerPoint

Sub OpenPowerPoint()
    Dim pptApp As Object
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
End Sub

Aquest codi crea una nova instància de PowerPoint i la fa visible.

  1. Crear una nova presentació

2.1. Crear una presentació buida

Sub CreateNewPresentation()
    Dim pptApp As Object
    Dim pptPres As Object
    
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    
    Set pptPres = pptApp.Presentations.Add
End Sub

Aquest codi crea una nova presentació buida.

2.2. Afegir diapositives

Sub AddSlides()
    Dim pptApp As Object
    Dim pptPres As Object
    Dim pptSlide As Object
    
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    
    Set pptPres = pptApp.Presentations.Add
    
    ' Afegir una diapositiva de títol
    Set pptSlide = pptPres.Slides.Add(1, 1) ' 1 representa ppLayoutTitle
    pptSlide.Shapes.Title.TextFrame.TextRange.Text = "Títol de la Presentació"
    pptSlide.Shapes.Placeholders(2).TextFrame.TextRange.Text = "Subtítol"
    
    ' Afegir una diapositiva de contingut
    Set pptSlide = pptPres.Slides.Add(2, 2) ' 2 representa ppLayoutText
    pptSlide.Shapes.Title.TextFrame.TextRange.Text = "Diapositiva de Contingut"
    pptSlide.Shapes.Placeholders(2).TextFrame.TextRange.Text = "Això és un text de mostra."
End Sub

Aquest codi afegeix dues diapositives: una de títol i una de contingut.

  1. Inserir imatges i donar format

3.1. Inserir una imatge

Sub InsertImage()
    Dim pptApp As Object
    Dim pptPres As Object
    Dim pptSlide As Object
    Dim imgPath As String
    
    imgPath = "C:\ruta\a\la\imatge.jpg"
    
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    
    Set pptPres = pptApp.Presentations.Add
    Set pptSlide = pptPres.Slides.Add(1, 1)
    
    pptSlide.Shapes.AddPicture imgPath, _
                               msoFalse, msoCTrue, _
                               100, 100, 500, 300
End Sub

Aquest codi insereix una imatge en una diapositiva.

3.2. Aplicar format al text

Sub FormatText()
    Dim pptApp As Object
    Dim pptPres As Object
    Dim pptSlide As Object
    Dim textShape As Object
    
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    
    Set pptPres = pptApp.Presentations.Add
    Set pptSlide = pptPres.Slides.Add(1, 1)
    
    Set textShape = pptSlide.Shapes.Title
    textShape.TextFrame.TextRange.Text = "Text amb Format"
    With textShape.TextFrame.TextRange
        .Font.Name = "Arial"
        .Font.Size = 32
        .Font.Bold = True
        .Font.Color = RGB(255, 0, 0)
    End With
End Sub

Aquest codi aplica format al text del títol de la diapositiva.

Exercicis pràctics

Exercici 1: Crear una presentació amb diverses diapositives

Crea una macro que generi una presentació amb les següents diapositives:

  1. Una diapositiva de títol amb el text "Benvinguts" i "A la nostra presentació".
  2. Una diapositiva de contingut amb el títol "Agenda" i una llista de punts amb els temes a tractar.
  3. Una diapositiva amb una imatge de la teva elecció.

Solució

Sub CreatePresentationWithSlides()
    Dim pptApp As Object
    Dim pptPres As Object
    Dim pptSlide As Object
    Dim imgPath As String
    
    imgPath = "C:\ruta\a\la\imatge.jpg"
    
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    
    Set pptPres = pptApp.Presentations.Add
    
    ' Diapositiva de títol
    Set pptSlide = pptPres.Slides.Add(1, 1)
    pptSlide.Shapes.Title.TextFrame.TextRange.Text = "Benvinguts"
    pptSlide.Shapes.Placeholders(2).TextFrame.TextRange.Text = "A la nostra presentació"
    
    ' Diapositiva de contingut
    Set pptSlide = pptPres.Slides.Add(2, 2)
    pptSlide.Shapes.Title.TextFrame.TextRange.Text = "Agenda"
    pptSlide.Shapes.Placeholders(2).TextFrame.TextRange.Text = "Tema 1" & vbCrLf & "Tema 2" & vbCrLf & "Tema 3"
    
    ' Diapositiva amb imatge
    Set pptSlide = pptPres.Slides.Add(3, 1)
    pptSlide.Shapes.AddPicture imgPath, _
                               msoFalse, msoCTrue, _
                               100, 100, 500, 300
End Sub

Exercici 2: Aplicar format a una diapositiva

Crea una macro que afegeixi una diapositiva amb el títol "Informe de Vendes" i doni format al text perquè sigui de color blau, mida 28 i cursiva.

Solució

Sub FormatSlideText()
    Dim pptApp As Object
    Dim pptPres As Object
    Dim pptSlide As Object
    Dim textShape As Object
    
    Set pptApp = CreateObject("PowerPoint.Application")
    pptApp.Visible = True
    
    Set pptPres = pptApp.Presentations.Add
    Set pptSlide = pptPres.Slides.Add(1, 1)
    
    Set textShape = pptSlide.Shapes.Title
    textShape.TextFrame.TextRange.Text = "Informe de Vendes"
    With textShape.TextFrame.TextRange
        .Font.Name = "Arial"
        .Font.Size = 28
        .Font.Italic = True
        .Font.Color = RGB(0, 0, 255)
    End With
End Sub

Conclusió

En aquest tema, hem après com utilitzar VBA per controlar PowerPoint des d'Excel. Hem vist com establir una connexió amb PowerPoint, crear presentacions, afegir diapositives, inserir imatges i aplicar format al text. Aquests coneixements ens permeten automatitzar moltes tasques repetitives i millorar la nostra productivitat.

En el següent tema, explorarem com accedir a bases de dades amb VBA per extreure i manipular dades de manera eficient.

© Copyright 2024. Tots els drets reservats