PowerPoint

VBA y PowerPoint: cómo automatizar presentaciones desde Excel

octubre 10, 2026 Tuto Excel 14 min read
VBA y PowerPoint: cómo automatizar presentaciones desde Excel

Tienes delante una hoja de Excel con tus productos, tus ventas o tu lista de alumnos y la misma pregunta de cada mes: ¿ahora copio cada fila a una diapositiva a mano? VBA (Visual Basic for Applications) es el lenguaje que ya viene dentro de Excel, y desde él puedes abrir PowerPoint, crear una presentación, añadir diapositivas, escribir dentro y cerrar: el mismo, todo en unos segundos. Al terminar este tutorial sabrás leer una hoja de Excel desde código y convertir cada fila en una diapositiva con su título, su texto y su formato, sin tocar el ratón. Funciona en Excel 2010, 2013, 2016, 2019, 2021, 2024 y Microsoft 365, en escritorio; en Excel para la web no hay VBA.

Qué es VBA y por qué escribirlo desde Excel

VBA es el lenguaje de macros que llevan dentro Excel, Word, PowerPoint, Outlook y Access. Con él le dices al programa, en un idioma: «haz esto, luego esto, luego esto», y el programa lo ejecuta solo. La gracia de escribirlo desde Excel es que ahí tienes tus datos: una hoja con la lista de productos, con sus precios y con su stock. En lugar de copiar y pegar cada fila en una diapositiva, escribes un procedimiento que lee la hoja, abre PowerPoint y crea una diapositiva por cada fila. La idea es esa: una hoja con la lista de productos y, con un solo clic, una presentación lista con una diapositiva por producto, todas con el mismo formato.

Las piezas del lenguaje: objetos, propiedades y métodos

VBA funciona con objetos, propiedades y métodos. Piensa en una jerarquía de carpetas: dentro de la aplicación (Application) hay presentaciones (Presentation); dentro de cada presentación hay diapositivas (Slide); dentro de cada diapositiva hay formas (Shape), como cuadros de texto o imágenes. Para llegar a ella vas abriendo carpetas con un punto: Application.Presentations(1).Slides(1).Shapes(1).TextFrame.TextRange.Text. Esa cadena larga, de dónde está cada cosa, es el modelo de objetos.

Objetos: la presentación, la diapositiva y la forma

Objeto Qué representa
Presentation El archivo .pptx entero, con todas sus diapositivas
Slide Una diapositiva dentro de la presentación
Shape Una forma dentro de la diapositiva: un cuadro de texto, una imagen, un rectángulo

Propiedades y métodos: lo que tienen y lo que hacen

Una propiedad es un dato del objeto: el texto que hay dentro de una forma, su color, su posición. Por ejemplo, Shape.TextFrame.TextRange.Text es la propiedad que guarda el texto. Un método es una acción que el objeto sabe hacer: crear una diapositiva, añadir una forma, abrir un archivo. Por ejemplo, Presentations.Add crea una presentación nueva y Slides.Add añade una diapositiva. En VBA, las propiedades se leen sin paréntesis (shp.Text) y los métodos, con paréntesis si llevan argumentos (Slides.Add 1, 1).

Variables y procedimientos Sub: dónde se guarda el trabajo

El código se guarda dentro de procedimientos Sub (subrutinas). Una variable se declara con Dim y guarda un valor mientras la macro se ejecuta. Por ejemplo, Dim pres As Presentation reserva un hueco para una presentación. El End Sub cierra el bloque. Cada macro empieza con Sub Nombre() y termina con End Sub.

Activar la pestaña Programador y abrir el editor

Para escribir VBA hay que activar la pestaña Programador y abrir el editor.

  1. Clic en Archivo > Opciones > Personalizar cinta de opciones.
  2. En la columna derecha, marca la casilla Programador.
  3. Pulsa Aceptar.
  4. Pulsa Alt+F11 para abrir el editor de Visual Basic.

La pestaña Programador aparece a la derecha de Vista y el editor se abre en una ventana nueva con tres zonas: a la izquierda el Explorador de proyectos, en el centro el código y arriba la barra de menús del editor.

Nota: Alt+F11 abre el editor y, si lo pulsas otra vez, lo cierra.
ArchivoOpcionesPersonalizar cinta de opciones

Tu primera macro: crear una presentación desde cero

Vamos a crear una presentación nueva con tres diapositivas, cada una con su título.

  1. En el editor, clic en Insertar > Módulo.
  2. Pega este código en el módulo:

Sub SimplePPTDemo()
    Dim pres As Presentation
    Dim sld As Slide
    Dim shp As Shape

    Set pres = Presentations.Add(msoTrue)

    Set sld = pres.Slides.Add(1, ppLayoutTitle)
    sld.Shapes(1).TextFrame.TextRange.Text = "Slide 1 — Introduction"

    Set sld = pres.Slides.Add(2, ppLayoutTitle)
    sld.Shapes(1).TextFrame.TextRange.Text = "Slide 2 — Key Points"

    Set sld = pres.Slides.Add(3, ppLayoutTitle)
    sld.Shapes(1).TextFrame.TextRange.Text = "Slide 3 — Summary"

    pres.SaveAs "C:\Tasks\Demo.pptx"
End Sub
  1. Coloca el cursor dentro del Sub y pulsa F5 para ejecutar.

PowerPoint se abre solo, crea el archivo Demo.pptx en C:\Tasks con tres diapositivas y los títulos que ves en el código. La macro tarda menos de lo que tardas en leerlo.

Presentacion Demo.pptx creada en C:
Tasks con 3 diapositivas
Comprueba: PowerPoint se abre con un archivo nuevo, tres diapositivas en el panel izquierdo y los títulos «Slide 1 — Introduction», «Slide 2 — Key Points» y «Slide 3 — Summary» en cada una.

Leer la hoja de Excel y llevarla a PowerPoint

Ahora la parte útil: leer la hoja de Excel y pasarla a PowerPoint. Primero, crea una hoja Productos con esta lista.

A1fx**Producto**
A B C
1 Producto Precio Stock
2 Cuaderno 3,20 45
3 Bolígrafo 1,50 120
4 Carpeta 4,75 30
5 Tijeras 2,90 18
6 Pegamento 1,95 60
Productos

El recorrido: Workbooks, Worksheets y Range

Antes de pasar nada a PowerPoint, vamos a leerla y a mostrarla en la ventana Inmediato del editor con Debug.Print.

Sub LeerHoja()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim i As Long

    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("Productos")

    For i = 2 To 6
        Debug.Print ws.Cells(i, 1).Value, ws.Cells(i, 2).Value, ws.Cells(i, 3).Value
    Next i
End Sub

Pulsa F5 con el cursor dentro del Sub. Luego, en el editor, Ver > Ventana Inmediato (Ctrl+G) muestra las cinco filas leídas, una por línea, con el producto, el precio y el stock separados por tabulador.

Crear una diapositiva por cada fila

Ahora unimos lectura y creación: un bucle que recorra las cinco filas y, por cada una, cree una diapositiva con el nombre del producto y el precio.

Sub CrearDiapositivas()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim pres As Presentation
    Dim sld As Slide
    Dim i As Long

    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("Productos")
    Set pres = Presentations.Add(msoTrue)

    For i = 2 To 6
        Set sld = pres.Slides.Add(i - 1, ppLayoutTitle)
        sld.Shapes(1).TextFrame.TextRange.Text = ws.Cells(i, 1).Value
        sld.Shapes(2).TextFrame.TextRange.Text = _
            "Precio: " & ws.Cells(i, 2).Value & " · Stock: " & ws.Cells(i, 3).Value
    Next i

    pres.SaveAs "C:\Tasks\Productos.pptx"
End Sub

ThisWorkbook es el libro de Excel que tiene la macro; Worksheets("Productos") es la hoja; Presentations.Add abre PowerPoint; el bucle añade una diapositiva por producto, donde la primera forma es el título y la segunda es el cuerpo. El resultado: cinco diapositivas, una por producto, con su precio y su stock.

Producto:
Cuaderno
Boligrafo
Carpeta
Tijeras
Pegamento
Comprueba: Al ejecutar, PowerPoint se abre con cinco diapositivas; el título de cada una es el nombre del producto (Cuaderno, Bolígrafo, Carpeta, Tijeras, Pegamento) y el cuerpo muestra «Precio: … · Stock: …».

Dar formato a las diapositivas con código

Crear diapositivas está bien, pero quieres que tengan un buen aspecto. VBA permite tocar fuente, tamaño, color y posición de cada Shape desde código.

Cambiar fuente, tamaño y color de un Shape

Vamos a poner todos los títulos en Calibri tamaño 24 y a teñir el texto de la primera diapositiva de un azul corporativo.

Sub FormatearDiapositivas()
    Dim pres As Presentation
    Dim sld As Slide
    Dim shpTitulo As Shape

    Set pres = Presentations("Productos.pptx")

    For Each sld In pres.Slides
        Set shpTitulo = sld.Shapes(1)
        With shpTitulo.TextFrame.TextRange.Font
            .Name = "Calibri"
            .Size = 24
        End With
    Next sld

    pres.Slides(1).Shapes(1).TextFrame.TextRange.Font.Color.RGB = RGB(0, 51, 102)
    pres.Save
End Sub

For Each sld In pres.Slides recorre todas las diapositivas; With ... End With evita repetir shpTitulo.TextFrame.TextRange.Font en cada línea; RGB(0, 51, 102) es un azul oscuro. La última línea pinta solo el título de la primera diapositiva y pres.Save guarda el archivo.

Insertar el logo en todas las diapositivas

Un logo en cada diapositiva, en la esquina superior izquierda.

Sub InsertLogo()
    Dim pres As Presentation
    Dim sld As Slide

    Set pres = Presentations("Productos.pptx")

    For Each sld In pres.Slides
        sld.Shapes.AddPicture _
            FileName:="C:\Tasks\Logo.png", _
            LinkToFile:=msoFalse, _
            SaveWithDocument:=msoTrue, _
            Left:=10, Top:=10, Width:=80, Height:=80
    Next sld

    pres.Save
End Sub

AddPicture inserta una imagen; LinkToFile:=msoFalse la incrusta (no la vincula); Left y Top miden en puntos desde la esquina superior izquierda de la diapositiva; Width y Height fijan el tamaño.

Logo insertado en 5 diapositivas
Comprueba: Cada una de las cinco diapositivas tiene ahora un cuadrado azul en la esquina superior izquierda con el logo, y los títulos se ven en Calibri 24. La primera diapositiva, además, tiene el título en azul RGB(0, 51, 102).

Añadir un botón en la diapositiva que ejecute la macro

Para que el usuario actualice los datos sin abrir el editor, dibuja un botón en la diapositiva y vincúlalo a una subclase del VBA de PowerPoint.

  1. En PowerPoint, abre la diapositiva donde vas a poner el botón.
  2. Clic en Insertar > Formas > Rectángulo.
  3. Dibuja el rectángulo y escribe dentro Actualizar datos.
  4. Clic derecho sobre el rectángulo > Hipervínculo o Acción > Ejecutar macro.
  5. En la lista, elige RecargarProductos y pulsa Aceptar.
InsertarFormasRectangulo

El Sub RecargarProductos tiene que vivir dentro del archivo .pptm, no del .xlsx; cópialo allí dentro del editor de VBA de PowerPoint (Alt+F11 desde la presentación):

Sub RecargarProductos()
    Dim pres As Presentation
    Set pres = ActivePresentation
    pres.Slides(1).Shapes(2).TextFrame.TextRange.Text = "Actualizado: " & Now
    pres.Save
End Sub

Al hacer clic en el rectángulo, la macro se ejecuta y la diapositiva muestra la fecha y hora actuales.

Comprueba: En modo Presentación con diapositivas (Mayús+F5), al hacer clic en el rectángulo Actualizar datos, la diapositiva cambia y oyes &Br; luego el mensaje «Actualizado: …» aparece en la segunda forma.

Por qué la macro no se ejecuta o PowerPoint no hace nada

Tres causas reales y cómo arreglarlas.

El archivo se guardó como .pptx y perdió la macro

Ves el mensaje «Las macros se han deshabilitado» o el botón no hace nada.

  1. Cierra la presentación sin guardar.
  2. Ve a Archivo > Guardar como.
  3. En Tipo, elige *Presentación de PowerPoint habilitada para macros (.pptm)**.
  4. Guarda y vuelve a abrir.

Las macros solo viven en archivos .pptm o .ppsm.

La macro está bloqueada por venir de internet

Al abrir el archivo ves la barra amarilla «ADVERTENCIA SE MACROS: las macros se han deshabilitado».

  1. Cierra el archivo.
  2. En el Explorador de Windows, clic derecho sobre el archivo > Propiedades.
  3. En la pestaña General, marca Desbloquear.
  4. Pulsa Aceptar y abre el archivo de nuevo.

También puedes mover el archivo a una carpeta de confianza: Archivo > Opción > Centro de mantenimiento > Ubicaciones de confianza.

Falta la referencia a la biblioteca de PowerPoint

Al ejecutar la macro ves el error «Compilación: no se ha definido el tipo definido por el usuario» o «No se encuentra el proyecto o la biblioteca».

  1. En el editor, Herramientas > Referencias.
  2. Busca Microsoft PowerPoint xx.x Object Library y márcala.
  3. Si no está, ve a Examinar y selecciona MSPPT.OLB dentro de la carpeta de Office.
  4. Pulsa Aceptar y vuelve a ejecutar con F5.
Cuidado: si desmarcas una referencia que ya estaba, otras macros pueden dejar de funcionar; solo desmarca lo que sabes qué fuente está activa.

Lo que VBA en PowerPoint no puede hacer

VBA vive dentro de la aplicación de escritorio de PowerPoint para Windows o para Mac. No funciona en PowerPoint para la web (las presentaciones que se abren en OneDrive o en SharePoint desde el navegador), en Google Slides ni en las apps de móvil. Tampoco funciona en PowerPoint para iPad ni para Android. Si tu archivo tiene que abrirse en esos sitios, el botón no hará nada y la macro se quedará en el código sin ejecutarse. En PowerPoint para la web la automatización se hace con Scripts de Office (JavaScript). En Google Slides se usa Google Apps Script. Y si solo quieres cambiar cuatro cosas, a veces es más rápido editar el archivo a mano que aprender una API nueva.

Lo que ya sabes hacer con VBA en PowerPoint

  • Abrir una hoja de Excel y leer sus datos fila a fila.
  • Crear una presentación de PowerPoint desde código.
  • Añadir una diapositiva por cada fila de la hoja, con su título y su texto.
  • Cambiar fuente, tamaño, color y posición de las formas desde VBA.

El siguiente paso natural es el mismo patrón con otro caso: una hoja con nombres de personas y una macro que, por cada nombre, cree una diapositiva-certificado, salve-a-PDF en una carpeta y los envie por correo. La mecánica es la misma que acabas de ver, solo que el For recorre otra hoja y la salida es otra cosa.


Datos comprobados en octubre de 2026.

Dudas al usar VBA con PowerPoint desde Excel

1. ¿Qué ejemplos de VBA en PowerPoint puedo usar para crear presentaciones desde Excel?

Con VBA puedes crear una presentación en blanco, añadir diapositivas con títulos y textos, copiar un rango de Excel como tabla y guardar el archivo en una carpeta. Un ejemplo típico es abrir PowerPoint desde Excel con CreateObject("PowerPoint.Application"), añadir una diapositiva y pegar un ChartObject como imagen. Empieza por una macro corta que cree un archivo de 2 diapositivas para entender la jerarquía Presentation > Slide > Shape.

2. ¿Dónde puedo descargar VBA para PowerPoint?

VBA viene integrado en PowerPoint y no se descarga por separado: al instalar PowerPoint de escritorio ya tienes el editor de macros. Si no lo ves, activa la ficha Programador en Archivo > Opciones > Personalizar cinta de opciones. El componente que sí se descarga aparte es la referencia Microsoft PowerPoint XX.X Object Library, que se añade desde Herramientas > Referencias en el editor.

3. ¿Cómo abro el editor de VBA en PowerPoint?

Pulsa Alt+F11 o entra en Programador > Visual Basic y se abrirá la ventana del editor con el árbol de proyectos a la izquierda. Allí verás el módulo ThisPresentation, donde puedes escribir la primera macro. Si solo necesitas una sub rápida, haz clic derecho sobre el nombre del archivo en el panel y elige Insertar > Módulo.

4. ¿Existe un editor de VBA online para PowerPoint?

No hay un editor de VBA en el navegador para PowerPoint: VBA solo se ejecuta en las versiones de escritorio de Windows. Lo que sí puedes hacer online es escribir y guardar el código en un editor de texto o en GitHub, y luego pegarlo en PowerPoint de escritorio. Para automatizar PowerPoint en la web se usa Office Scripts con JavaScript, no VBA.

5. ¿Cómo inserto código VBA en PowerPoint en Windows?

Abre el editor con Alt+F11, inserta un módulo desde Insertar > Módulo y pega dentro la sub que quieras ejecutar. Antes de pegar, comprueba en Herramientas > Referencias que Microsoft PowerPoint Object Library está marcada, si usas objetos del modelo de PowerPoint. Guarda el archivo como .pptm y no como .pptx, porque el formato sin macros borraría el código al cerrar.

6. ¿Hay algún tutorial de VBA para PowerPoint en PDF?

No hay un PDF oficial de Microsoft sobre VBA en PowerPoint; la referencia más fiable es la documentación de learn.microsoft.com, que se puede imprimir a PDF desde el navegador. Busca concretamente los temas Application, Presentation y Slide del modelo de objetos de PowerPoint. Si quieres un PDF descargable, imprime la página desde el navegador con Ctrl+P eligiendo Guardar como PDF, lo que mantiene el código formateado.

7. ¿Cómo agrego código VBA en PowerPoint para Mac?

PowerPoint para Mac no incluye el editor de VBA: esa función solo existe en la versión de Windows. En Mac puedes abrir y ejecutar archivos .pptm con macros ya escritos, pero no crearlos ni editarlos. La alternativa en Mac es usar AppleScript con la biblioteca Microsoft PowerPoint, o pasar el archivo a un equipo Windows para desarrollarlo y luego ejecutarlo allí.

8. ¿Cómo abro el editor de Visual Basic en PowerPoint?

El camino rápido es Alt+F11 desde cualquier diapositiva, o entrar por Programador > Visual Basic. Si la ficha Programador no aparece, actívala en Archivo > Opciones > Personalizar cinta de opciones marcando su casilla. Dentro del editor, el panel izquierdo lista los módulos y al hacer doble clic se abre la ventana de código donde escribirás tu primera macro.

Fuentes

  1. MicrosoftPowerPoint Visual Basic for Applications (VBA) referenceconsultado el 05/10/2026
  2. MicrosoftLAMBDA — documentación oficialconsultado el 05/10/2026
  3. MicrosoftRange.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local — documentación oficialconsultado el 05/10/2026
  4. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 05/10/2026
  5. MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 05/10/2026