Está en la página 1de 7

Crear presentacin

PowerPoint con VBA


Excel es una gran herramienta para el manejo de datos y la creacin de
grficos, pero cuando llega el momento de hacer una presentacin en
pblico generalmente utilizamos PowerPoint por los beneficios que ofrece a
los presentadores. Sin embargo el proceso de copiar y pegar los grficos
de Excel a una presentacin PowerPoint puede ser tardado y muy
repetitivo.
Hoy aprenderemos como llevar todos los grficos contenidos en un libro de
Excel hacia una presentacin PowerPoint con solo ejecutar una macro y en
el proceso aprenderemos un poco ms de VBA. As que sin ms
prembulos comencemos a escribir cdigo.

Librera de Objetos PowerPoint


Para poder utilizar las instrucciones VBA que nos permiten interactuar con
PowerPoint es necesario agregar una referencia hacia la Librera de objetos
de PowerPoint. Para hacerlo abrimos el Editor de Visual Basic y vamos a la
opcin Herramientas > Referencias y se mostrar el cuadro de dilogo
Referencias.

Busca la librera llamada Microsoft PowerPoint Object Library. En mi caso


tengo instalada la versin 14.0 que se refiere a la versin de PowerPoint
2010. Una vez seleccionada la librera haz clic en el botn Aceptar y
estaremos listos para utilizar los objetos de PowerPoint desde nuestra
macro en Excel.

Macro para crear archivo PowerPoint


El primer paso en la creacin de la macro ser insertar un nuevo mdulo de
cdigo para colocar la subrutina que para este ejemplo he llamado
CrearPowerPoint. Las primeras lneas de cdigo las utilizaremos para
definir las variables de nuestra macro.

Las variables que utilizaremos son las siguientes:

archivoPPT: variable que tendr una referencia al objeto


PowerPoint.Application el cual nos permite interactuar con
PowerPoint
diapositiva: variable que representar una diapositiva dentro de la
presentacin PowerPoint
hojaXLS: variable que contendr una referencia a un objeto
Excel.Worksheet y que ser de utilidad para recorrer todas las hojas
de nuestro libro.
grafico: variable que har referencia a un objeto que representar
cada grfico del libro de Excel.
Continuando con la construccin de la macro, agregar un par de
instrucciones para crear una instancia del objeto PowerPonit.Application en
la variable archivoPPT y posteriormente crear la presentacin PowerPoint:

Copiar cada grfico a una diapositiva


Una vez que hemos creado la presentacin debemos centrarnos en la parte
ms importante de nuestra macro que es el bucle que recorrer todas las
hojas del libro Excel y por cada grfico encontrado insertar una nueva
diapositiva en la presentacin PowerPoint para posteriormente copiar el
grfico de Excel:

Puedes observar dos bucles For Each. El primero es para recorrer todas las
hojas del libro y el segundo para recorrer todos los grficos dentro de una
misma hoja. De esta manera, no importa la cantidad de grficos que tengas
en cada hoja, la macro insertar una diapositiva para cada uno de ellos.
Despus de crear la diapositiva se copiar el grfico y finalmente se hace el
centrado de la imagen dentro de la diapositiva.

Comprobacin de la macro
Tengo un archivo de Excel que tiene 2 hojas y tres grficos que estn
distribuidos de la siguiente manera. La hoja Temperatura tiene 1 grfico y la
hoja Viento tiene 2 grficos:

Para ejecutar la macro voy a la ficha Programador, pulso el botn Macros y


selecciono la macro recin creada. Como resultado obtengo una
presentacin de PowerPoint que contiene una diapositiva para cada uno de
los grficos del libro de Excel:

De esta manera hemos copiado todos los grficos de un libro de Excel a


una presentacin de PowerPoint de manera automtica. Es muy importante
recordar que la presentacin PowerPoint creada por la macro no est
almacenada en disco duro por lo que es necesario guardar el archivo desde
PowerPoint. Para obtener el cdigo VBA creado en este ejemplo
puedes descargar el libro de Excel que he utilizado o puedes copiar el
cdigo que coloco a continuacin:
1
2
3
4
5
6
7
8
9

Sub CrearPowerPoint()
'Definicin de variables
Dim archivoPPT As PowerPoint.Application
Dim diapositiva As PowerPoint.Slide
Dim hojaXLS As Excel.Worksheet
Dim grafico As Excel.ChartObject
'Instancia del objeto PowerPoint.Application
Set archivoPPT = New PowerPoint.Application

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

'Creamos una presentacin PowerPoint


archivoPPT.Presentations.Add
'Recorrer tods los grficos en nuestro libro de Excel
For Each hojaXLS In ThisWorkbook.Worksheets
For Each grafico In hojaXLS.ChartObjects
'Agregar nueva diapositiva
archivoPPT.ActivePresentation.Slides.Add _
archivoPPT.ActivePresentation.Slides.Count + 1, ppLayoutBlank
archivoPPT.ActiveWindow.View.GotoSlide _
archivoPPT.ActivePresentation.Slides.Count
Set diapositiva = archivoPPT.ActivePresentation.Slides( _
archivoPPT.ActivePresentation.Slides.Count)
'Copiar grfico en la dispositiva
hojaXLS.ChartObjects(grafico.Index).Chart.CopyPicture
diapositiva.Shapes.Paste.Select

'Centramos la imagen insertada


archivoPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, msoTru
archivoPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, msoTru
Next
Next
'Eliminamos las instancias creadas
Set diapositiva = Nothing
Set archivoPPT = Nothing
Set grafico = Nothing
Set hojaXLS = Nothing
End Sub

También podría gustarte