miércoles, 22 de marzo de 2017

MACRO PARA EXPORTAR GRAFICOS A POWER POINT

La macro de hoy es muy sencilla pero muy útil, nos permite exportar gráficos de Excel a PowerPoint:

En el documento de Excel tengo generado dos gráficos, que exportaremos a power point con la macro.


     Hemos agregado una figura que utilizaremos como botón para ejecutar  la macro:


Creamos una referencia a Microsoft Power Point:


   Este es el código de la macro:


Definimos cuatro variables: WPPT que representa power point , WSLD que representa el slide de la presentación , WS define nuestra hoja de cálculo, GR los gráficos de la hoja de cálculo.
Creamos la presentación en power point con la instrucción WPPT.Presentations.Add, dentro de un ciclo recorremos todos los graficos de la hoja de cálculo y los agregamos a la presentación, antes de esto creamos un nuevo slide en la presentación. Con estas instrucciones agregamos el slide:

WPPT.ActivePresentation.Slides.Add _
            WPPT.ActivePresentation.Slides.Count + 1, ppLayoutBlank
        WPPT.ActiveWindow.View.GotoSlide _
            WPPT.ActivePresentation.Slides.Count
        Set WSLD = WPPT.ActivePresentation.Slides( _
            WPPT.ActivePresentation.Slides.Count)

Con esta instrucción copiamos la imagen de Excel a PowerPoint:

WS.ChartObjects(GR.Index).Chart.CopyPicture
        WSLD.Shapes.Paste.Select

Después centramos la imagen en la presentación:

WPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, msoTrue
        WPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, msoTrue

Si ejecutamos la macro tendremos el siguiente resultado:



Puedes descargar el documento con la macro siguiendo este enlace.
Espero que esta macro te sea de utilidad, si tienes dudas escríbenos a macrosymacros1@gmail.com.




2 comentarios:

  1. "WSLD.Shapes"
    Compile error:
    Method or data member not found

    How to fix this?

    ResponderEliminar
  2. Tengo una duda, si quiero exportar grafico y la tabla que lo representa se puede hacer? y en un archivo de powerpoint existente? saludos

    ResponderEliminar