power point vba

7
Crear presentación PowerPoint con VBA Excel es una gran herramienta para el manejo de datos y la creación de gráficos, pero cuando llega el momento de hacer una presentación en público generalmente utilizamos PowerPoint por los beneficios que ofrece a los presentadores. Sin embargo el proceso de copiar y pegar los gráficos de Excel a una presentación PowerPoint puede ser tardado y muy repetitivo. Hoy aprenderemos como llevar todos los gráficos contenidos en un libro de Excel hacia una presentación PowerPoint con solo ejecutar una macro y en el proceso aprenderemos un poco más de VBA. Así que sin más preámbulos comencemos a escribir código. Librería de Objetos PowerPoint Para poder utilizar las instrucciones VBA que nos permiten interactuar con PowerPoint es necesario agregar una referencia hacia la Librería de objetos de PowerPoint. Para hacerlo abrimos el Editor de Visual Basic y vamos a la opción Herramientas > Referencias y se mostrará el cuadro de diálogo Referencias.

Upload: francisco-torreglosa

Post on 18-Nov-2015

21 views

Category:

Documents


3 download

DESCRIPTION

Macro para crear power point con vba

TRANSCRIPT

Crear presentacin PowerPoint con VBAExcel 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 PowerPointPara 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 elEditor de Visual Basicy 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 PowerPointEl 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 diapositivaUna 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 macroTengo 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 laficha 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 puedesdescargar el libro de Excelque he utilizado o puedes copiar el cdigo que coloco a continuacin:1234567891011121314151617181920212223242526272829303132333435363738394041424344Sub CrearPowerPoint()'Definicin de variablesDim archivoPPT As PowerPoint.ApplicationDim diapositiva As PowerPoint.SlideDim hojaXLS As Excel.WorksheetDim grafico As Excel.ChartObject'Instancia del objeto PowerPoint.ApplicationSet archivoPPT = New PowerPoint.Application'Creamos una presentacin PowerPointarchivoPPT.Presentations.Add'Recorrer tods los grficos en nuestro libro de ExcelFor Each hojaXLS In ThisWorkbook.WorksheetsFor Each grafico In hojaXLS.ChartObjects'Agregar nueva diapositivaarchivoPPT.ActivePresentation.Slides.Add _archivoPPT.ActivePresentation.Slides.Count + 1, ppLayoutBlankarchivoPPT.ActiveWindow.View.GotoSlide _archivoPPT.ActivePresentation.Slides.CountSet diapositiva = archivoPPT.ActivePresentation.Slides( _archivoPPT.ActivePresentation.Slides.Count)'Copiar grfico en la dispositivahojaXLS.ChartObjects(grafico.Index).Chart.CopyPicturediapositiva.Shapes.Paste.Select'Centramos la imagen insertadaarchivoPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, msoTruearchivoPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, msoTrueNextNext'Eliminamos las instancias creadasSet diapositiva = NothingSet archivoPPT = NothingSet grafico = NothingSet hojaXLS = NothingEnd Sub