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.
- 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.
- Obre l'Editor de VBA (Alt + F11).
- Ves a
Eines
>Referències
. - 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.
- 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.
- 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:
- Una diapositiva de títol amb el text "Benvinguts" i "A la nostra presentació".
- Una diapositiva de contingut amb el títol "Agenda" i una llista de punts amb els temes a tractar.
- 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.
Curs de VBA (Visual Basic for Applications)
Mòdul 1: Introducció a VBA
Mòdul 2: Conceptes bàsics de VBA
- Variables i tipus de dades
- Operadors en VBA
- Estructures de control: If...Then...Else
- Bucles: For, While, Do Until
- Treballar amb arrays
Mòdul 3: Treballar amb objectes d'Excel
- Comprendre el model d'objectes d'Excel
- Treballar amb llibres i fulls de càlcul
- Manipulació de cel·les i rangs
- Utilitzar l'objecte Range
- Formatar cel·les amb VBA
Mòdul 4: Programació avançada en VBA
- Crear i utilitzar funcions
- Gestió d'errors en VBA
- Tècniques de depuració
- Treballar amb UserForms
- Programació basada en esdeveniments
Mòdul 5: Interactuar amb altres aplicacions
- Automatitzar Word amb VBA
- Automatitzar Outlook amb VBA
- Accedir a bases de dades amb VBA
- Utilitzar VBA per controlar PowerPoint
Mòdul 6: Millors pràctiques i optimització
- Escriure codi VBA eficient
- Tècniques de refactorització de codi
- Documentar el teu codi
- Control de versions per a projectes VBA