Biblioteca de referencia de PowerPoint VBA
- Hacer referencia a presentaciones, diapositivas y formas.
- Cuente el n煤mero de diapositivas
- Obtener el n煤mero de 铆ndice de la diapositiva actual
- Agregar diapositivas
- Eliminar diapositivas
- Mover diapositivas
- Recorriendo todas las diapositivas de la presentaci贸n activa
- Recorriendo todas las formas en la diapositiva activa
- Recorriendo todas las formas en todas las diapositivas
- Recorriendo todas las formas vinculadas en todas las diapositivas
- Administrar enlaces
- formas
El siguiente c贸digo pretende ser una referencia b谩sica para cualquiera que intente utilizar c贸digo VBA para Powerpoint. Ciertamente no est谩 completo, pero es un c贸digo que he usado por varias razones. Intentar茅 agregar y mejorar esta referencia a medida que use m谩s c贸digo VBA de PowerPoint.
Hacer referencia a presentaciones, diapositivas y formas.
'Establece la variable pptPresentation en la presentaci贸n activa Dim pptPresentation As PresentationSet pptPresentation = ActivePresentation
'Establece la variable pptSlide en el slideDim pptSlide activo As SlideSet pptSlide = Application.ActiveWindow.View.Slide
'Establece la variable pptSlide en una diapositiva espec铆fica (la cuarta diapositiva)Dim pptSlide As SlideSet pptSlide = ActivePresentation.Slides(4)
'Establece la variable pptObject en el ObjectDim pptObject seleccionado como ObjectSet pptObject = ActiveWindow.Selection.ShapeRange
Cuente el n煤mero de diapositivas
'Cuenta el n煤mero de diapositivas en la presentaci贸n activaDebug.Print ActivePresentation.slides.Count
Obtener el n煤mero de 铆ndice de la diapositiva actual
'Obtiene el n煤mero de diapositiva de la diapositiva activaDebug.Print Application.ActiveWindow.View.Slide.SlideIndex
Agregar diapositivas
'Crea una nueva diapositiva en blanco en la posici贸n 5 de la presentaci贸n activaDim pptSlide As SlideSet pptSlide = ActivePresentation.Slides.Add(5, ppLayoutBlank)
'Crea una nueva diapositiva en blanco al final de la presentaci贸n activaDim pptSlide As SlideSet pptSlide = ActivePresentation.Slides.Add(ActivePresentation.Slides.Count + 1, ppLayoutBlank)
ppLayoutBlank es solo una de las opciones de dise帽o disponibles.
ppLayoutEn blanco ppLayoutChart ppLayoutChartAndText ppLayoutClipartAndText ppLayoutClipArtAndVerticalText ppLayoutFourObjects ppLayoutLargeObject ppLayoutMediaClipAndText ppLayoutMixed ppLayoutObject |
ppLayoutObjectAndText ppLayoutObjectOverText ppLayoutOrgchart ppLayoutTable ppLayoutText ppLayoutTextAndChart ppLayoutTextAndClipart ppLayoutTextAndMediaClip ppLayoutTextAndObject ppLayoutTextAndTwoObjects |
ppLayoutTextOverObject ppLayoutTitle ppLayoutTitleOnly ppLayoutTwoColumnText ppLayoutTwoObjectsAndText ppLayoutTwoObjectsOverText ppLayoutVerticalText ppLayoutVerticalTitleAndText ppLayoutVerticalTitleAndTextOverChart |
Eliminar diapositivas
'Eliminar una diapositiva, diapositiva 6 en este ejemplo ActivePresentation.Slides(6).Delete
Mover diapositivas
'Mueve la posici贸n de una diapositiva, mueve la diapositiva 4 para convertirla en la diapositiva 2ActivePresentation.Slides(4).MoveTo toPos:=2
Recorriendo todas las diapositivas de la presentaci贸n activa
'Recorre cada diapositiva en la presentaci贸n activaDim pptSlide As SlideDim pptShape As ShapePara cada pptSlide en ActivePresentation.Slides 'Haz algo en cada diapositiva Siguiente
Recorriendo todas las formas en la diapositiva activa
'Recorriendo todas las formas en la diapositiva activaDim pptSlide As SlideDim pptShape As ShapeSet pptSlide = Application.ActiveWindow.View.SlideFor Each pptShape In pptSlide.Shapes 'Haz algo con cada formaSiguiente
Recorriendo todas las formas en todas las diapositivas
'Recorre todas las formas en todas las diapositivas de la presentaci贸n activa.Dim pptSlide As SlideDim pptShape As ShapePara cada pptSlide en ActivePresentation.Slides para cada pptShape en pptSlide.Shapes 'Haz algo con esas formas NextNext
Recorriendo todas las formas vinculadas en todas las diapositivas
'Recorre en bucle todas las formas vinculadas en todas las diapositivas de la presentaci贸n activa. Dim pptSlide As SlideDim pptShape As ShapeFor Each pptSlide In ActivePresentation.Slides For Each pptShape In pptSlide.Shapes If pptShape.Type = msoLinkedPicture O pptShape.Type = msoLinkedOLEObject Entonces 'Haz algo con esas formas vinculadas Finalizar si SiguienteSiguiente
Si est谩 aplicando un m茅todo, la otra opci贸n es aplicar el m茅todo a todas las formas, incluso si no est谩n vinculadas. Deber谩 manejar los errores en los que esa forma no sea una forma vinculada.
'Recorre en bucle todas las formas vinculadas en todas las diapositivas de la presentaci贸n activa. Dim pptSlide As SlideDim pptShape As ShapeFor Each pptSlide In ActivePresentation.Slides For Each pptShape In pptSlide.Shapes On Error Reanudar Siguiente 'Aplica el m茅todo a todas las formas, incluso si algunas formas generar谩n un error. Error Ir a 0 SiguienteSiguiente
Administrar enlaces
Algunos de los m茅todos relacionados con los enlaces ocurren a nivel de presentaci贸n, mientras que otros ocurren a nivel de forma.
M茅todos de nivel de presentaci贸n
'Romper todos los enlacesActivePresentation.BreakLinks
'Actualizar todos los enlacesActivePresentation.UpdateLinks
M茅todos de nivel de forma
Los fragmentos de c贸digo de esta secci贸n no son independientes. Deben usarse donde pptShape se haya configurado o definido a trav茅s de un bucle.
'Romper el enlace de una forma vinculada espec铆ficapptShape.LinkFormat.BreakLink
'Actualiza el enlace a una forma vinculada espec铆ficapptShape.LinkFormat.UpdateLink
'Cambie el tipo de enlace a Actualizaci贸n manualpptShape.LinkFormat.AutoUpdate = ppUpdateOptionManual
'Cambie el tipo de enlace a actualizaci贸n autom谩ticapptShape.LinkFormat.AutoUpdate = ppUpdateOptionAutomatic
'Cambie un enlace para ir a un nuevo archivo fuentepptShape.LinkFormat.SourceFullName = "C:UsersmarksExcelBook.xlsx!Sheet1!R1C1:R20C20"
formas
'Crea una forma y config煤rala en una variableDim pptSlide As SlideDim pptShape As ShapeSet pptSlide = Application.ActiveWindow.View.Slide Set pptShape = pptSlide.Shapes.AddShape(Type:=msoShapeRectangle, _Left:=50, Top:=50, Ancho: =50, Altura:=50)'Nombra la formapptShape.Name = "myShape
'Muestra los tama帽os de la forma seleccionadaDim msgText As StringmsgText = "Top: " ActiveWindow.Selection.ShapeRange.Top vbNewLinemsgText = msgText "Left: " ActiveWindow.Selection.ShapeRange.Left vbNewLinemsgText = msgText "Height: " ActiveWindow.Selection.ShapeRange. Alto vbNewLinemsgText = msgText "Ancho: " ActiveWindow.Selection.ShapeRange.Width vbNewLineMsgBox msgText
Deja una respuesta