PDF

Cómo guardar una hoja de Excel en PDF con una macro: tutorial paso a paso

octubre 27, 2026 Tuto Excel 14 min read
Cómo guardar una hoja de Excel en PDF con una macro: tutorial paso a paso

Una macro en Excel que exporta a PDF automatiza una tarea repetitiva: en lugar de ir a Archivo > Guardar como > PDF cada viernes, pulsas un botón y Excel guarda la hoja, le pone nombre y abre el archivo. Funciona en Excel 2007 en adelante, también en 2010, 2013, 2016, 2019, 2021, 2024 y Microsoft 365, tanto en Windows como en Excel para Mac. Al terminar el tutorial tendrás una macro pegada en un módulo, otra asignada a un botón dibujado en la hoja y sabrás resolver los tres errores más típicos (archivo guardado como .xlsx, macros bloqueadas y copia local no deseada).

Qué hace una macro que exporta a PDF y cuándo te ahorra tiempo

Imagina la hoja Ventas de tu tienda: cada viernes hay que mandarle al cliente el resumen de la semana. Hoy haces Archivo > Guardar como > PDF, escribes el nombre "Ventas semana X", eliges la carpeta del correo y le das a Enviar. El proceso lleva tres minutos, pero lo haces cuarenta semanas al año y siempre se te olvida un paso. Una macro que exporta a PDF lo reduce a un clic y quita los errores humanos (olvidar la carpeta, equivocarse de nombre, guardar varias hojas en lugar de una).

Excel trae de fábrica la opción de guardar como PDF desde la cinta: Archivo > Exportar > Crear PDF. El problema es que esa ruta hay que repetirla cada vez. Una macro de VBA es el atajo: un Sub que ejecuta los mismos pasos por ti. VBA lleva en Excel desde 1993, así que está en todas las versiones de escritorio; en Excel para la web no existe, allí se usa Office Scripts.

La macro usa el método ExportAsFixedFormat, que es la instrucción de VBA que convierte una hoja (o un libro entero) a PDF. La macro no es magia: es el mismo diálogo de Exportar, escrito en código. La diferencia es que el código se queda guardado dentro del propio archivo .xlsm, así que cualquier persona que abra ese libro en un Excel con macros puede ejecutarlo con un botón.

Lo que ganarás al final del tutorial: una hoja Ventas como la del ejemplo (cliente, producto, importe, fecha), una macro guardada en un módulo, un botón en la hoja que la lanza y la capacidad de cambiar la carpeta y el nombre del PDF cada vez que pulses.

Las piezas que necesitas tener listas antes de escribir la macro

Antes de abrir el editor, conviene tener cuatro cosas resueltas para que la macro funcione a la primera:

  • Archivo guardado como .xlsm. Un libro con macros se guarda con la extensión .xlsm (Libro de Excel habilitado para macros); en .xlsx las macros se borran al guardar porque .xlsx no las soporta. La primera vez, al pulsar F12 (Guardar como), cambia el tipo a "Libro de Excel habilitado para macros".
  • Pestaña Programador visible. Por defecto está oculta. Se activa en Archivo > Opciones > Personalizar cinta de opciones, marcando la casilla "Programador". En Mac va en Excel > Preferencias > Vista > Pestaña Programador.
  • Editor de VBA a mano. Se abre con Alt+F11 (en Mac, Opt+F11). Es una ventana aparte con un árbol de proyectos a la izquierda y una zona de código a la derecha.
  • Configuración regional clara. VBA usa el punto y coma como separador dentro de su propio código, independientemente de si tu Windows está en español, inglés o alemán. Los argumentos Filename, Quality e IgnorePrintAreas se separan con coma dentro del código VBA; si copias una macro que uses coma y tu Windows tiene punto y coma, no pasa nada porque VBA ignora la configuración regional.
Nota: Una vez en el artículo, recuerda: en las fórmulas de la hoja se usa punto y coma porque el Excel del lector está en español. En código VBA es siempre coma; este es el único lenguaje del tutorial donde la coma manda.

El editor de VBA y el módulo donde se pega la macro

Pulsa Alt+F11 y se abre Microsoft Visual Basic for Applications. A la izquierda ves el Explorador de proyectos, con un nodo por cada libro abierto. Dentro hay una carpeta "Microsoft Excel Objetos" con una entrada por hoja (Hoja1, Hoja2, Hoja3) y otra para "ThisWorkbook" (el libro entero). Para que la macro esté disponible en todas las hojas se mete en un módulo, no dentro del código de una hoja.

Para crear el módulo se usa el menú Insertar > Módulo. Aparece una carpeta "Módulos" en el árbol y dentro, "Módulo1": esa es la zona en blanco donde se pega la macro. La ventana de código tiene arriba dos listas desplegables: la izquierda elige el objeto y la derecha el evento; para una macro normal déjalas en "(General)".

Consejo: Si ya tienes una macro en Hoja1 y la arrastras al módulo con Ctrl+X y Ctrl+V, la macro sigue funcionando igual; los módulos solo organizan, no afectan al comportamiento.

El método ExportAsFixedFormat y sus argumentos

Este es el método que convierte la hoja a PDF. Sus argumentos principales son:

Argumento Qué hace Valores típicos
Type Tipo de archivo fijo que se crea xlTypePDF para PDF; xlTypeXPS para XPS
Filename Ruta y nombre del archivo, con extensión .pdf "C:\\Informes\\Ventas.pdf"
Quality Calidad del PDF xlQualityStandard (estándar) o xlQualityMinimum
IncludeDocProperties Incluye autor, título y asunto del libro True o False
IgnorePrintAreas Si es True, exporta toda la hoja aunque tengas un área de impresión marcada True o False
OpenAfterPublish Abre el PDF en el visor justo después de crearlo True o False

xlTypePDF es una constante de VBA: el editor la entiende sin más, no hay que poner número. Si la ruta de Filename incluye carpetas que no existen, VBA devuelve un error 1004 en cuanto se ejecuta.

Una macro sencilla que guarda la hoja activa como PDF

Empezamos con la hoja Ventas del ejemplo, ya rellenada con los datos de la semana. La macro guardará esa hoja sola, no el libro entero, y la dejará abierta para revisarla.

A1fx**Cliente**
A B C D E
1 Cliente Producto Importe Fecha
2 Libreria Centro Cuaderno A4 45,00 03/10/2026
3 Papeleria Norte Boligrafo azul 12,50 03/10/2026
4 Oficina Sur Carpeta anillas 28,00 04/10/2026
5 Tienda Mayorista Pack folios 96,00 04/10/2026
6 Imprenta Veloz Tinta impresora 34,90 05/10/2026
7 Libreria Centro Pegamento barra 6,75 06/10/2026
8 Papeleria Norte Cuaderno A5 18,40 06/10/2026
Ventas
  1. Abre el archivo ventas_trimestre.xlsm y, si todavía no tienes la pestaña Programador, actívala en Archivo > Opciones > Personalizar cinta de opciones.
  2. Pulsa Alt+F11 para abrir el editor de VBA.
  3. En el menú Insertar > Módulo, pega el código siguiente:

Sub GuardarComoPDF()
    Dim ruta As String
    ruta = ThisWorkbook.Path & "\Ventas_" & Format(Date, "yyyy-mm-dd") & ".pdf"
    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=ruta, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    MsgBox "PDF guardado en: " & ruta
End Sub
  1. Coloca el cursor en cualquier línea entre Sub y End Sub y pulsa F5 (Ejecutar). Verás un mensaje con la ruta del archivo y el PDF se abrirá solo.
  2. Cierra el mensaje y vuelve a Excel. Para futuras ejecuciones puedes pulsar Alt+F8, elegir "GuardarComoPDF" y darle a Ejecutar, sin abrir el editor.
Comprueba: En la carpeta donde está guardado el .xlsm debe aparecer un archivo Ventas_2026-10-06.pdf. Si lo abres, verás la hoja Ventas (solo la hoja, no el libro entero) con A1:D8.
Cuidado: ThisWorkbook.Path devuelve la carpeta del archivo. Si el libro nunca se guardó (es nuevo en memoria), la ruta está vacía y la macro falla: la primera ejecución debe ser después de haber guardado el .xlsm con Ctrl+G.

Una macro con botón en la hoja para no abrir el editor

La macro del paso anterior funciona, pero cada semana hay que pulsar Alt+F8 y buscarla en la lista. Un botón directamente en la hoja es más rápido: un clic y listo. La pestaña Programador trae un grupo de controles para esto.

D8fx=
A B C D
1 Cliente Producto Importe Fecha
2 Libreria Centro Cuaderno A4 45,00 03/10/2026
3 Papeleria Norte Boligrafo azul 12,50 03/10/2026
4 Oficina Sur Carpeta anillas 28,00 04/10/2026
5 Tienda Mayorista Pack folios 96,00 04/10/2026
6 Imprenta Veloz Tinta impresora 34,90 05/10/2026
7 Libreria Centro Pegamento barra 6,75 06/10/2026
8 Papeleria Norte Cuaderno A5 18,40 06/10/2026
9
10 Guardar como PDF
B10 Botón “Guardar como PDF”
Ventas
  1. Ve a Programador > Controles > Insertar y, dentro de "Controles de formulario", elige el primero: "Botón".
ProgramadorControlesInsertar
  1. Dibuja el botón en la celda B10 con un par de clics y suelta. Aparece el cuadro "Asignar macro".
  2. Elige "GuardarComoPDF" en la lista y pulsa Aceptar. Ya tienes el botón enganchado a la macro.
  3. Cierra el editor si lo tienes abierto. Pulsa el botón: el PDF se crea en la carpeta del libro y se abre solo.

' Este es el código del evento Click del botón,
' VBA lo mete dentro de la hoja, no en el módulo:
Private Sub btnGuardar_Click()
    Dim ruta As String
    ruta = ThisWorkbook.Path & "\Ventas_" & Format(Date, "yyyy-mm-dd") & ".pdf"
    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=ruta, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub
Comprueba: Al pulsar el botón, el PDF aparece en la misma carpeta que el .xlsm y se abre en tu visor. La macro del módulo sigue funcionando con Alt+F8, así que tienes dos formas de lanzarla.

Cómo elegir la carpeta y el nombre del PDF al ejecutar

La macro del botón siempre guarda en la misma carpeta y con el mismo nombre. Para que cada viernes elijas dónde y cómo llamarlo, hay que usar GetSaveAsFilename, una función de VBA que abre el cuadro "Guardar como" típico de Windows y devuelve la ruta que el usuario eligió (o False si cancela).

Sub GuardarComoPDFDialogo()
    Dim ruta As Variant
    ruta = Application.GetSaveAsFilename( _
        InitialFileName:="Ventas_" & Format(Date, "yyyy-mm-dd"), _
        FileFilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Save as PDF")
    If ruta = False Then Exit Sub
    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=ruta, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

Application.GetSaveAsFilename no exporta nada, solo pregunta. Si el lector pulsa Cancelar, devuelve False (no es una cadena, es un valor booleano), por eso ruta se declara como Variant. La variable ruta lleva el nombre y la carpeta exactos que el usuario eligió, y se la pasamos a ExportAsFixedFormat. La macro siguiente pregunta la primera vez de cada ejecución, así sirve para mandar distintos informes sin tocar el código.

Comprueba: Al ejecutar esta versión, sale el diálogo Guardar como, puedes cambiar la carpeta y el nombre, y al pulsar Guardar, el PDF aparece justo donde lo pediste.

Por qué la macro deja de funcionar o no llega a ejecutarse

Las macros que exportan a PDF fallan por tres causas casi siempre: el archivo se guardó mal, el libro de Excel vino de fuera y Excel bloquea las macros por seguridad, o VBA crea una copia temporal del PDF que se queda en una carpeta rara. Hay un cuarto caso poco habitual: la versión de Excel no trae la función ExportAsFixedFormat (en Excel 2007 funciona, pero hay Service Pack mínimos); en ese caso lo que se ve es un error 1004 con el texto "El método ExportAsFixedFormat ha fallado".

Guardar el archivo como .xlsm para que conserve la macro

Si después de crear la macro cierras el libro y Excel te pregunta "Guardar cambios en *.xlsx?", le has dado a Guardar sin pensarlo: has convertido el archivo en uno sin macros y la macro ha desaparecido. La próxima vez, Alt+F8 mostrará una lista vacía.

ArchivoGuardar como
  1. Pulsa F12 para abrir Guardar como.
  2. En el campo "Tipo", elige "Libro de Excel habilitado para macros (*.xlsm)".
  3. Escribe el nombre (por ejemplo, ventas_trimestre.xlsm) y pulsa Guardar.
  4. Si ya tenías un .xlsx con el mismo nombre, confirma "Usar el formato xlsm".
Comprueba: Cierra y reabre el archivo. Pulsa Alt+F11 y verifica que el Módulo1 sigue ahí con la macro dentro. Si está vacío, es que guardaste en .xlsx; repite el paso anterior.

Desbloquear las macros cuando Excel las bloquea

Un archivo descargado de internet, recibido por correo o copiado desde una memoria USB queda en una zona "protegida" y Excel muestra el aviso "Las macros se han deshabilitado" debajo de la cinta. Pulsar el botón no hace nada y Alt+F8 no ve la macro.

ArchivoInformaciónSeguridadHabilitar contenido
  1. En el Explorador de Windows, clic derecho sobre el .xlsm > Propiedades.
  2. En la pestaña "General", marca "Desbloquear" y acepta.
  3. Abre el archivo en Excel. Si sale la barra amarilla, pulsa "Habilitar contenido" > "Habilitar todas las macros de este archivo".
Cuidado: "Habilitar todas las macros" en el Centro de confianza no es buena idea porque abre la puerta a macros maliciosas. Mejor desbloquear solo el archivo concreto, como se ve arriba.

La copia local del PDF que aparece aunque solo quieras abrirlo

Cuando pones OpenAfterPublish:=True y el PDF se abre, Excel deja una copia temporal en C:\Users\<usuario>\AppData\Local\Temp\ por seguridad. Algunos antivirus bloquean ese temporal y "abrir el PDF" se queda colgado. Si solo quieres generar y enviar por correo sin abrir, la solución es poner OpenAfterPublish:=False. Si aun así quieres verlo, abre el PDF directamente desde la carpeta Temp (escribe %TEMP% en Ejecutar de Windows).

ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=ruta, _
    Quality:=xlQualityStandard, _
    OpenAfterPublish:=False
Comprueba: Con OpenAfterPublish:=False el archivo se crea en la ruta indicada y el visor ya no se abre. Si quieres comprobar visualmente que está bien hecho, ábrelo desde la carpeta manualmente.

Lo que ya sabes hacer con la macro para guardar PDF y el siguiente paso

  • Guardar la hoja activa como PDF con un Sub de VBA en un módulo, llamado con F5 o Alt+F8.
  • Asignar ese Sub a un botón de la pestaña Programador para ejecutarlo con un clic desde la propia hoja.
  • Dejar que el usuario elija carpeta y nombre con Application.GetSaveAsFilename y cancele sin exportar si se arrepiente.
  • Resolver los tres cortes típicos: archivo .xlsx que tira la macro, macros bloqueadas por seguridad y OpenAfterPublish:=True que se queda colgado por el antivirus.

El siguiente paso lógico es mandar ese PDF por correo sin abrir Outlook a mano. VBA lo consigue con Outlook.Application y MailItem.Attachments.Add; en el siguiente tutorial se cierra el círculo: misma hoja Ventas, mismo botón, ahora exportando y adjuntando al destinatario en una sola operación.

Datos comprobados en octubre de 2026.

Dudas al guardar una hoja de Excel como PDF con macro

1. Cómo crear una macro que guarde un Excel en PDF usando el valor de una celda como nombre del archivo

En el Editor de VBA (Alt+F11), crea un módulo y usa ExportAsFixedFormat con la ruta fija más el contenido de la celda, por ejemplo Range("A1").Value. Así cada PDF se nombra según lo que esa celda tenga escrito en ese momento, sin tener que cambiar el nombre a mano.

2. Cómo hacer una macro que imprima directamente un Excel a PDF

La macro más corta usa ActiveSheet.ExportAsFixedFormat xlTypePDF, "C:\Carpeta\archivo.pdf". Solo tienes que cambiar la carpeta de destino; el archivo se crea y se abre solo en tu visor de PDF, sin pasar por el cuadro de impresión.

3. Macro para exportar varias hojas de un libro a un único PDF

Selecciona el rango continuo que quieres imprimir (Sheets(Array(…)).Select) y ejecuta ExportAsFixedFormat xlTypePDF una sola vez. Excel manda al PDF las hojas en el orden en que aparecen en la matriz, todas dentro del mismo archivo.

4. Se puede usar Guardar como PDF desde una macro sin pulsar el menú

Sí: el método ExportAsFixedFormat del objeto Worksheet hace lo mismo que Archivo > Guardar como > PDF, pero sin abrir ningún cuadro de diálogo. Es el camino más limpio para automatizar exportaciones desde un botón o un evento.

5. Cuál es la forma más rápida de guardar un Excel en PDF

Pulsa F12 y en el tipo de archivo elige PDF; o, sin salir del libro, ve a Archivo > Guardar como y escoge PDF en la lista de tipos. Sin macros, el archivo se guarda con la extensión .pdf en la carpeta que elijas.

6. Cómo guardar en PDF solo lo que tengo seleccionado en Excel

Selecciona el rango en la hoja, ve a Archivo > Guardar como y elige PDF; en el siguiente paso marca Selección y pulsa Publicar. Con macros, el método es ExportAsFixedFormat aplicado al Range en lugar de a la hoja completa.

7. Se puede convertir un PDF a Excel desde una macro

No de forma directa: Excel no trae un motor para leer PDFs desde VBA. Tienes que abrirlo a mano en el Editor de Power Query (Datos > Obtener datos > De archivo > Desde PDF) o usar una herramienta externa que devuelva un libro de Excel.

8. Cómo guardar un cuadro o tabla de Excel como imagen PDF

En la pestaña Insertar, elige Formas y dibújalo sobre el cuadro; después cópialo con Ctrl+C y pégalo en Power Point o Word, desde donde lo exportas a PDF. Si quieres que el PDF quede clavado, desde la hoja usa Imprimir área y marca solo ese rango antes de guardar como PDF.

Fuentes

  1. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 12/10/2026
  2. MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 12/10/2026
  3. MicrosoftFormatos de archivo de Excel — documentación oficialconsultado el 12/10/2026