Tutorial y ejemplos de macros de PowerPoint VBA

Esta es una guía completa para automatizar PowerPoint usando macros VBA (Visual Basic para Aplicaciones). A continuación encontrará muchos ejemplos útiles.

VBA PDF (descargas gratuitas)

¡Descargue nuestro tutorial gratuito de Microsoft PowerPoint VBA! ¡O tutoriales de VBA para otros programas de Office!

Descargar

Tutorial de PowerPoint VBA (macros)

Guardar como presentación habilitada para macros

La presentación con código VBA debe ser "Guardada como" Presentación habilitada para macros de PowerPoint (* .pptm)

Habilitar la pestaña "Desarrollador" en la cinta

Debe habilitar la pestaña Desarrollador en la cinta antes de crear el código VBA. Para hacerlo, elija Archivo -> Opciones, luego haga clic en "Personalizar cinta" y marque la casilla junto a la pestaña "Desarrollador" en el panel derecho.

Crear macro de PowerPoint

Este es un ejemplo simple de una macro de PowerPoint VBA:

1234567891011 Sub SavePresentationAsPDF ()Dim pptName como cadenaDim PDFName como cadena'Guardar PowerPoint como PDFpptName = ActivePresentation.FullName'Reemplazar la extensión del archivo de PowerPoint en el nombre a PDFPDFName = Izquierda (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub

Guarda la presentación activa como PDF. Cada línea de código hace lo siguiente:

  • Crea variables para el nombre de PowerPoint y el nombre de PDF
  • Asigna el nombre de la presentación activa a la variable pptName
  • Crea el nombre completo del PDF
  • Guarda la presentación como PDF

Aplicación de PowerPoint

Cuando el código VBA se ejecuta dentro de una presentación de PowerPoint, la aplicación de PowerPoint es la aplicación predeterminada y se puede manipular sin una referencia explícita. Crear una nueva presentación

Para crear una presentación, use el método Add de la aplicación PowerPoint.

123 Aplicación.Presentaciones.Añadir'o sin referencia explícitaPresentaciones Agregar

Abrir una nueva presentación

Para abrir una presentación nueva y en blanco, utilice el método Add de Application.

1 Presentaciones Agregar

Abrir una presentación existente

Para abrir una presentación que ya ha creado, utilice el método Open de Application.

1 Presentations.Open ("Mi presentación.pptx")

El código anterior asume que la presentación está en el mismo directorio que la presentación de PowerPoint que contiene el código.

Abrir y asignar a una variable

Debe asignar la presentación que abre a una variable para que pueda manipularla según sus requisitos.

12 Dim ppt como presentaciónEstablecer ppt = Presentations.Open ("Mi presentación.pptx")

Consulte la presentación activa

Utilice la referencia ActivePrentation para manipular la presentación activa en la GUI cuando se ejecuta el código VBA.

12 'Imprima el nombre de la presentación activa en la ventana inmediataDebug.Print ActivePresentation.Name

Guardar presentación actual

La siguiente declaración guardará la presentación activa si se guardó antes. Si no se ha guardado, aparecerá el cuadro de diálogo "Guardar como".

1 ActivePresentation.Save

Cerrar presentación actual

La siguiente declaración cerrará la presentación activa incluso si no se guardó después de la última edición.

1 ActivePresentation.Close

Referencias útiles

Asignar presentación existente (por nombre) a variable

12 Atenuar myPresentationByName como presentaciónEstablecer myPresentationByName = Application.Presentations ("Mi presentación")

Asignar diapositiva activa a variable

12 Corriente atenuada Deslizamiento como deslizamientoEstablecer currentSlide = Application.ActiveWindow.View.Slide

Asignar diapositiva por índice a variable

12 Atenuar mySlide como diapositivaEstablecer mySlide = ActivePresentation.Slides (11)

Contar el número de diapositivas

12 Atenuar diapositivaslideCount = ActivePresentation.Slides.Count

Obtener índice de diapositiva Número de diapositiva actual

12 Atenuar currentSlideIndex como diapositivacurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Agregar una diapositiva en blanco al final de la presentación de diapositivas

1234567 Atenuar diapositivaDim newSlide as SlideslideCount = ActivePresentation.Slides.CountEstablecer newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'o como ppLayoutBlank = 12Establecer newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank)

Agregar una diapositiva después de la diapositiva actual

12345 Dim newSlide As SlideAtenuar currentSlideIndex como enterocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexEstablecer newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank)

Eliminar una diapositiva

1234 Atenuar currentSlideIndex como enterocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Delete

Ir a una diapositiva específica

12 Esto te llevará a la diapositiva número 4.Application.ActiveWindow.View.GotoSlide (4)

Mover diapositiva

Puede mover una diapositiva de su posición anterior a la nueva posición

123456 'Pasar de la diapositiva 3 a la primera diapositivaDim oldPosition como entero, dim newPosition como enterooldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition

Recorrer todas las diapositivas

Puede hacer algo con cada diapositiva o pasar por todas las diapositivas para encontrar algunas diapositivas y hacer algo al respecto con el uso del código;

123456 Atenuar mySlide como SlidePara cada mySlide en ActivePresentation.Slides'Hacer algo con la diapositiva actual a la que se hace referencia en la variable' mySlide ''Debug.Print mySlide.NameLa siguiente diapositiva

Recorrer todas las formas de la diapositiva activa

El poder de PowerPoint se puede realizar mediante el uso de "Formas". El siguiente código recorre todas las formas de la diapositiva actual para que pueda manipularlas como desee;

123456789 Dim currentSlide as SlideDim shp como formaEstablecer currentSlide = Application.ActiveWindow.View.SlidePara cada shp en currentSlide.Shapes'Hacer algo con la forma actual a la que se hace referencia en la variable' shp ''Por ejemplo, imprima el nombre de la forma en la ventana InmediatoDebug.Print shp.NameSiguiente shp

Recorrer todas las formas en todas las diapositivas

Puede recorrer todas las formas de la presentación agregando un bucle para recorrer todas las diapositivas.

123456789 Dim currentSlide as SlideDim shp como formaPara cada diapositiva actual en ActivePresentation.SlidesPara cada shp en currentSlide.Shapes'Hacer algo con la forma actual a la que se hace referencia en la variable' shp 'Debug.Print shp.NameSiguiente shpSiguiente diapositiva actual

Recorrer todos los cuadros de texto de la diapositiva activa

Los TextBoxes son las formas más utilizadas en las presentaciones de PowerPoint. Puede recorrer todos los cuadros de texto agregando una marca de "Tipo de forma". Los TexBoxes tienen el tipo de forma definido como la constante de VBA msoTextBox (el valor numérico de la constante es 17)

1234567891011 Dim currentSlide as SlideDim shp como formaEstablecer currentSlide = Application.ActiveWindow.View.SlidePara cada shp en currentSlide.Shapes'Compruebe si el tipo de forma es msoTextBoxSi shp.Type = 17 Entonces 'msoTextBox = 17'Imprime el texto en el TextBoxDebug.Print shp.TextFrame2.TextRange.TextTerminara siSiguiente shp

Recorrer todos los cuadros de texto en todas las diapositivas

Nuevamente, puede recorrer todos los cuadros de texto de la presentación agregando un bucle para recorrer todas las diapositivas.

1234567891011 Atenuar corriente Deslizar como Deslizar Atenuar shp como FormaPara cada diapositiva actual en ActivePresentation.SlidesPara cada shp en currentSlide.Shapes'Compruebe si el tipo de forma es msoTextBoxSi shp.Type = 17 Entonces 'msoTextBox = 17'Hacer algo con el TextBox mencionado en la variable' shp 'Debug.Print shp.TextFrame2.TextRange.TextTerminara siSiguiente shpSiguiente diapositiva actual

Copiar diapositivas seleccionadas a una nueva presentación PPT

Para copiar ciertas diapositivas a una nueva presentación, primero seleccione las diapositivas deseadas en la presentación existente y luego ejecute el código a continuación;

123456789101112131415161718 Dim currentPresentation como presentaciónDim currentSlide as SlideDim newPresentation como presentación'Guardar referencia a la presentación actualEstablecer currentPresentation = Application.ActivePresentation'Guardar referencia a la diapositiva actualEstablecer currentSlide = Application.ActiveWindow.View.Slide'Agregar nueva presentación y guardar en una referenciaEstablecer NewPresentation = Application.Presentations.Add'Copiar diapositivas seleccionadasSelección. CopiarPéguelo en una nueva presentaciónNewPresentation.Slides.Paste

Copiar la diapositiva activa al final de la presentación activa

12345 'Copiar diapositiva actualApplication.ActiveWindow.View.Slide.Copy'Pegar al finalActivePresentation.Slides.Paste

Ejemplos útiles de macros de PowerPoint

A continuación, se muestran algunos ejemplos de macros útiles que muestran cómo realizar tareas. Estos también demostrarán los conceptos descritos anteriormente.

Cambiar diapositiva durante la presentación de diapositivas

1234567891011 Sub ChangeSlideDuringSlideShow ()Atenuar SlideIndex como enteroAtenuar SlideIndex Anterior como entero'Cambiar la diapositiva actual a la diapositiva 4 seleccionada durante la presentación de diapositivasSlideIndex = 4'El índice de la ventana de presentación de diapositivas actual es 1 en la colección SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexEnd Sub

Cambiar fuente en todas las diapositivas en todos los cuadros de texto

123456789101112131415 Sub ChangeFontOnAllSlides ()Atenuar mySlide como diapositivaDim shp como forma'Cambiar el tamaño de fuente en todas las diapositivasPara cada mySlide en ActivePresentation.SlidesPara cada artículo en mySlide.ShapesSi shp.Type = 17 Entonces 'msoTextBox = 17'Cambiar tamaño de fuente a 24shp.TextFrame.TextRange.Font.Size = 24Terminara siSiguiente shpSiguiente mySlideEnd Sub

Cambiar mayúsculas y minúsculas a normal en todos los cuadros de texto

123456789101112131415 Sub ChangeCaseFromUppertoNormal ()Atenuar mySlide como diapositivaDim shp como forma'Cambiar de mayúscula a normal para todas las diapositivasPara cada mySlide en ActivePresentation.SlidesPara cada artículo en mySlide.ShapesSi shp.Type = 17 Entonces 'msoTextBox = 17'Cambiar mayúsculas a mayúsculas y minúsculasshp.TextFrame2.TextRange.Font.Allcaps = FalsoTerminara siSiguiente shpSiguiente mySlideEnd Sub

Alternar entre mayúsculas y minúsculas en todos los cuadros de texto

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal ()Atenuar mySlide como diapositivaDim shp como forma'Alternar entre mayúsculas y minúsculas para todas las diapositivasPara cada mySlide en ActivePresentation.SlidesPara cada artículo en mySlide.ShapesSi shp.Type = 17 Entonces 'msoTextBox = 17'Alternar entre mayúsculas y minúsculasshp.TextFrame2.TextRange.Font.Allcaps = _No shp.TextFrame2.TextRange.Font.AllcapsTerminara siSiguiente shpSiguiente mySlideEnd Sub

Eliminar el subrayado de los descendientes

En tipografía, un descendente es la parte de una letra que se extiende por debajo de la línea de base de una fuente. En la mayoría de las fuentes, los descendientes se reservan para caracteres en minúscula como g, j, q, p, y y, a veces, f.

Cuando subraya el texto, no se ve bien debajo de los descendientes. Aquí está el código para eliminar el subrayado de todos los caracteres g, j, p, qey en toda la Presentación.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders ()Atenuar mySlide como diapositivaDim shp como formaDim descenders_list como cadenaFrase tenue como cadenaDim x tan largo'Eliminar subrayados de descendienteslista_descendientes = "gjpqy"Para cada mySlide en ActivePresentation.SlidesPara cada artículo en mySlide.ShapesSi shp.Type = 17 Entonces 'msoTextBox = 17"Eliminar el subrayado de las letras" gjpqy "Con shp.TextFrame.TextRangefrase = .TextoPara x = 1 Para Len (.Texto)Si InStr (lista_descendientes, Mid $ (frase, x, 1))> 0 Entonces.Caracteres (x, 1) .Font.Underline = FalseTerminara siSiguiente xTerminar conTerminara siSiguiente shpSiguiente mySlideEnd Sub

Eliminar animaciones de todas las diapositivas

Utilice el siguiente código para eliminar todas las animaciones establecidas en una presentación.

123456789101112 Sub RemoveAnimationsFromAllSlides ()Atenuar mySlide como diapositivaDim i tan largoPara cada mySlide en ActivePresentation.SlidesPara i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Eliminar cada animaciónmySlide.TimeLine.MainSequence.Item (i) .DeleteSiguiente yoSiguiente mySlideEnd Sub

Guardar presentación como PDF

Puede guardar fácilmente la presentación activa en formato PDF.

1234567891011 Sub SavePresentationAsPDF ()Dim pptName como cadenaDim PDFName como cadena'Guardar PowerPoint como PDFpptName = ActivePresentation.FullName'Reemplazar la extensión del archivo de PowerPoint en el nombre a PDFPDFName = Izquierda (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub

Buscar y reemplazar texto

Puede buscar y reemplazar texto en Todos los cuadros de texto de Todas las diapositivas. Después de la primera instancia del texto que desea encontrar (definida por findWhat), debe recorrer el comando Buscar para encontrar otras instancias, si las hay.

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText ()Atenuar mySlide como diapositivaDim shp como formaDim findLo que como cadenaDim reemplazar con como cadenaAtenuar ShpTxt como TextRangeAtenuar TmpTxt como TextRangefindWhat = "chacal"replaceWith = "zorro"'Buscar y buscar y reemplazarPara cada mySlide en ActivePresentation.SlidesPara cada artículo en mySlide.ShapesSi shp.Type = 17 Entonces 'msoTextBox = 17Establecer ShpTxt = shp.TextFrame.TextRange'Buscar la primera instancia de la palabra "Buscar" (si existe)Establecer TmpTxt = ShpTxt.Replace (findWhat, _Reemplazar qué: = reemplazar con, _Palabras completas: = Verdadero)'Buscar cualquier instancia adicional de la palabra "Buscar" (si existe)Hacer mientras TmpTxt no es nadaEstablecer ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Establecer TmpTxt = ShpTxt.Replace (findWhat, _Reemplazar qué: = reemplazar con, _Palabras completas: = Verdadero)CírculoTerminara siSiguiente shpSiguiente mySlideEnd Sub

Exportar diapositiva como imagen

Puede exportar la diapositiva actual (o cualquier otra diapositiva) como una imagen PNG o JPG (JPEG) o BMP.

1234567891011121314 Sub ExportSlideAsImage ()Dim imageType como cadenaDim pptName como cadenaAtenuar imageName como cadenaAtenuar mySlide como diapositiva'Exportar diapositiva actual a imagenimageType = "png" 'o jpg o bmppptName = ActivePresentation.FullNameimageName = Izquierda (pptName, InStr (pptName, ".")) & imageTypeEstablecer mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeEnd Sub

Cambiar el tamaño de la imagen para cubrir la diapositiva completa

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide ()Atenuar mySlide como diapositivaDim shp como forma'Cambiar el tamaño de la imagen a tamaño de diapositiva completo'Cambiar la altura y el ancho de la primera forma en la diapositiva actual'para adaptarse a las dimensiones de la diapositivaEstablecer mySlide = Application.ActiveWindow.View.slideEstablecer shp = mySlide.Shapes (1)'''' Reemplace dos enunciados anteriores con'' la siguiente declaración si desea'' expandir la forma seleccionada actualmente'' dará error si no se selecciona nada'Establecer shp = ActiveWindow.Selection.ShapeRange (1)Con shp.LockAspectRatio = Falso.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Izquierda = 0.Top = 0Terminar conEnd Sub

Salir de todas las presentaciones de diapositivas en ejecución

Si tiene varias presentaciones de diapositivas abiertas al mismo tiempo, puede cerrarlas todas con la macro siguiente.

1234567 Sub ExitAllRunningSlideShows ()Hacer mientras SlideShowWindows.Count> 0SlideShowWindows (1) .View.SalirCírculoEnd Sub

Automatizar PowerPoint desde Excel

También puede conectarse a PowerPoint a través de otras aplicaciones (como Excel y Word). Como primer paso, debe hacer referencia a una instancia de PowerPoint.

Hay dos formas de hacerlo: encuadernación anticipada y encuadernación tardía .

PowerPoint abierto - Encuadernación anticipada

En "Enlace anticipado", debe establecer explícitamente una referencia a "Biblioteca de objetos de Microsoft PowerPoint 16" (para MS Office 2022) en el VBE (Editor de Visual Basic) mediante la opción Herramientas-> Referencias.

123 'Encuadernación tempranaDim pptApp como aplicaciónEstablecer pptApp = Nueva aplicación de PowerPoint.

PowerPoint abierto - Encuadernación tardía

En "Enlace tardío", la variable de aplicación se declara como un objeto y el motor VBA se conecta a la aplicación correcta en tiempo de ejecución.

123 'Encuadernación tardíaDim pptApp como objetoEstablecer pptApp = CreateObject ("PowerPoint.Application")

Hacer visible la aplicación

Después de configurar la referencia a la aplicación PowperPoint, es posible que deba hacerla visible.

1 pptApp.Visible = Verdadero

Manipular PowerPoint

Puede usar todos los métodos para manipular presentaciones, desde dentro de PowerPoint, descritos anteriormente desde Excel, simplemente agregando la referencia a PowerPoint creada por usted anteriormente.

Por ejemplo

1 Presentations.Open ("Mi presentación.pptx")

tiene que ser usado me gusta esto

1 pptApp .Presentations.Open ("Mi presentación.pptx")

Cerrar la aplicación

Una vez que haya completado lo que quería hacer con la aplicación de PowerPoint, debe cerrarla y liberar la referencia.

12 pptApp.QuitEstablecer pptApp = Nada

Copiar de Excel a PowerPoint

Este código copiará un rango de Excel a PowerPoint:

Nota: Se ha mantenido lo más simple posible para mostrar cómo un rango de Excel se puede copiar a PowerPoint usando VBA.

12345678910111213141516171819 Sub copyRangeToPresentation ()'Abrir nueva instancia de PowerPointEstablecer pptApp = CreateObject ("PowerPoint.Application")Con pptApp'Crear una nueva presentaciónEstablecer ppt = .Presentations.Add'Agregar una diapositiva en blancoEstablecer newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Copiar rango de hoja activa en ExcelActiveSheet.Range ("A1: E10"). Copiar'Pegar en PowerPoint como una imagennewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Cambiar a PowerPoint.ActivarTerminar conEnd Sub

Preguntas frecuentes sobre PowerPoint VBA

¿Qué son las macros en PPT?

Una macro es un término general que se refiere a un conjunto de instrucciones de programación que automatizan tareas. Las macros de PowerPoint (PPT) automatizan las tareas en PowerPoint utilizando el lenguaje de programación VBA.

¿Cómo uso VBA en PowerPoint?

Para usar VBA en PowerPoint, abra el Editor de VBA (ALT + F11 o Desarrollador> Visual Basic).

¿Cómo creo una macro en PowerPoint?

1. Abra el Editor de VBA (ALT + F11 o Desarrollador> Visual Basic)
2. Vaya a Insertar> Módulo para crear un módulo de código.
3. Escribe "Sub HelloWorld" y presiona Enter.
4. Entre las líneas "Sub HelloWorld" y "End Sub", escriba "MsgBox" Hello World! "
5. ¡Ha creado una macro!
6. Ahora presione "F5" para ejecutar la macro

Escrito por: Vinamra Chandra

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave