Pasas la hoja a PDF, la abres… y la tabla sale partida en cuatro páginas, con dos columnas sueltas al final y media fila cortada. No es un fallo de Excel: es que Excel no exporta lo que ves en pantalla, exporta lo que imprimiría, y eso se decide en Diseño de página.
Lo esencial, en treinta segundos.
- El PDF sale cortado porque tu tabla es más ancha que la hoja de papel. Se arregla en Diseño de página › Ajustar área de impresión › Ancho: 1 página.
- Para que quepa en una sola hoja, pon Ancho y Alto en 1 página — pero mira antes cuánto encoge la letra, porque con una tabla larga queda ilegible.
- Si la tabla es ancha y corta, lo que necesitas no es encoger: es orientación horizontal.
- Para meter varias hojas en un solo PDF, selecciónalas con Ctrl y exporta con Publicar: Hoja(s) activa(s). Si las quieres todas, ahí mismo eliges Todo el libro.
- Y si haces esto todos los días, una macro con un botón lo deja en un clic, con el nombre del archivo tomado de una celda.
La cotización con su botón de PDF, gratis
Dos hojas —una en blanco y un ejemplo resuelto—, la macro dentro y el botón EXPORTAR A PDF ya puesto. Para que veas funcionando todo lo que se explica aquí.
Cotización en Excel con botón de PDF (caso práctico)
Por qué tu Excel sale cortado al pasarlo a PDF
Excel no tiene una idea de «la hoja» como un lienzo infinito cuando va a imprimir. Toma el ancho de tus columnas, lo compara con el ancho del papel que tengas configurado —normalmente A4 vertical— y parte el contenido en tantas páginas como haga falta. El PDF hereda exactamente ese reparto.
Lo bueno es que ese reparto se puede ver antes de exportar, y ahí se acaba casi todo el problema:
La pantalla se pone en gris y aparecen líneas azules: cada rectángulo es una página del PDF. Si ves la palabra «Página 2» a la derecha de tu tabla, ya sabes por qué sale cortada. Y esas líneas se pueden arrastrar con el mouse para forzar dónde quieres el corte.
Cómo pasar Excel a PDF en una sola hoja
Hay dos caminos y no son intercambiables. El primero es el que deberías usar casi siempre.
1. Ajustar solo el ancho (lo recomendable)
Con esto le dices a Excel: «que todas mis columnas entren a lo ancho, y a lo largo usa las páginas que necesites». Es lo que quieres en el 90 % de los casos, porque un listado de 200 filas tiene que ocupar varias páginas: lo que no puede es partirse por la mitad a lo ancho.
2. Forzarlo todo en una página
Lo que hay que hacer antes, y casi nadie hace
Tres ajustes de treinta segundos que ganan muchísimo espacio y evitan tener que encoger:
- Márgenes estrechos. En Diseño de página › Márgenes › Estrecho pasas de 1,78 cm a 0,64 cm por lado: son 2,3 cm más de ancho útil. Suele ser la diferencia entre caber y no caber.
- Definir el área de impresión. Selecciona solo el rango que quieres en el PDF y ve a Diseño de página › Área de impresión › Establecer área de impresión. Así las columnas auxiliares y las notas de trabajo no viajan al PDF.
- Repetir la fila de encabezados si la tabla ocupa varias páginas: Diseño de página › Imprimir títulos › Repetir filas en extremo superior, y eliges la fila. Sin esto, a partir de la página 2 el que lo reciba no sabe qué significa cada columna.
Cómo exportar el Excel a PDF en horizontal
Parece obvio y sin embargo es la solución correcta muchas más veces de lo que se usa. La regla es sencilla:
| Si tu tabla es… | Lo que necesitas |
|---|---|
| Ancha y con pocas filas (un tablero de indicadores, una comparativa por meses) | Horizontal. Ganas ancho de verdad, sin encoger la letra |
| Estrecha y con muchas filas (un listado, un kardex) | Vertical con Ancho: 1 página y encabezados repetidos |
| Ancha y con muchas filas | Horizontal y Ancho: 1 página. Si aún no cabe, sobran columnas en el PDF |
Llévate el ejemplo armado
Con su área de impresión ya definida en las dos hojas, para que el PDF salga en una página y no partido.
Cotización en Excel con botón de PDF (caso práctico)
Cómo pasar varias hojas de Excel a un solo PDF
Se puede, y sin instalar nada. Tienes dos formas según quieras todo el libro o solo algunas hojas.
Todo el libro
Solo algunas hojas
Haz clic en la primera pestaña, mantén Ctrl y ve haciendo clic en las demás. Con las hojas seleccionadas, exporta normalmente: Excel entiende que quieres solo esas.
Cómo exportar a PDF con una macro y un botón
Todo lo anterior son ajustes que haces una vez. Pero si generas el mismo reporte todos los días, lo que quieres es hacer clic en un botón y que el PDF aparezca solo, con su nombre puesto y guardado en la misma carpeta que el Excel. Eso son unas veinte líneas de código, y la mitad son comprobaciones para que no reviente.
Paso 1 · Abre el editor de Visual Basic
Presiona Alt + F11. Se abre una ventana aparte. En el panel de la izquierda verás el árbol con tus hojas —si no ves ese panel, presiona Ctrl + R—. Haz clic derecho sobre cualquiera de ellas y elige Insertar › Módulo. Se abre una ventana de código en blanco, bajo una carpeta nueva llamada Módulos: ahí va el código.

Paso 2 · Pega el código
Sub CrearPDF()
Dim RutaArchivo As String
Dim NombreArchivo As String
If ThisWorkbook.Path = "" Then
MsgBox "Guarda primero el archivo de Excel.", vbExclamation
Exit Sub
End If
NombreArchivo = ActiveSheet.Name
RutaArchivo = ThisWorkbook.Path & Application.PathSeparator & NombreArchivo & ".pdf"
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=RutaArchivo, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
MsgBox "PDF creado: " & NombreArchivo & ".pdf", vbInformation
End SubQué hace cada parte, porque conviene entenderlo antes de tocarlo:
| Línea | Para qué sirve |
|---|---|
| ThisWorkbook.Path | La carpeta donde está el Excel. El PDF se guarda ahí mismo. Si el libro nunca se ha guardado, esto está vacío — por eso el código lo comprueba y avisa en vez de fallar |
| Application.PathSeparator | La barra de la ruta. Se usa esto en vez de escribirla a mano para que funcione igual en Windows y en Mac |
| ActiveSheet | Exporta solo la hoja en la que estás. Para el libro entero se cambia por ThisWorkbook, pero solo en la línea del ExportAsFixedFormat: si lo cambias también en la del nombre, ThisWorkbook.Name devuelve el nombre con extensión y el PDF sale llamándose «Reporte.xlsm.pdf» |
| IgnorePrintAreas:=False | Respeta el área de impresión que hayas definido. Es lo que quieres… salvo que tengas un área vieja olvidada, y entonces es justo lo que te recorta el PDF |
| OpenAfterPublish:=False | No abre el PDF al terminar. Ponlo en True si prefieres revisarlo cada vez |
| Quality:=xlQualityStandard | Calidad normal. Con xlQualityMinimum pesa bastante menos, útil si lo mandas por correo |

Paso 3 · Que el PDF tome el nombre de una celda
Esta es la variante que más se busca. Si en la celda B2 tienes el número de la cotización o el nombre del cliente, el PDF puede llamarse así solo. Y aquí va lo importante, porque es donde se atasca todo el mundo: este bloque SUSTITUYE a la línea NombreArchivo = ActiveSheet.Name, y tiene que quedar antes de la línea que arma RutaArchivo. Si lo pegas debajo, el PDF seguirá llamándose como la hoja —sin dar ningún error, que es lo peor—.
' esto reemplaza a: NombreArchivo = ActiveSheet.Name
Dim i As Long, malos As Variant
malos = Array("\", "/", ":", "*", "?", Chr(34), "<", ">", "|")
NombreArchivo = Trim(Range("B2").Text)
For i = LBound(malos) To UBound(malos)
NombreArchivo = Replace(NombreArchivo, malos(i), "-")
Next i
If NombreArchivo = "" Then NombreArchivo = ActiveSheet.Name
' y la linea de siempre, que ya existia:
RutaArchivo = ThisWorkbook.Path & Application.PathSeparator & NombreArchivo & ".pdf"Tres decisiones de ese bloque que conviene entender:
| Qué | Por qué |
|---|---|
| El bucle de Replace | Windows no admite estos nueve caracteres en el nombre de un archivo: \ / : * ? » < > |. Si la celda trae una fecha como «12/09/2026», o un texto como «¿Cliente?», la macro se para con el error 1004 y el usuario no entiende nada. Un bucle sobre los nueve es más corto que escribir nueve Replace seguidos. Chr(34) es la comilla doble: se pone así porque escribirla dentro de una cadena de VBA obliga a duplicarla y se lee fatal |
| .Text y no .Value | .Value devuelve el valor de dentro; .Text devuelve lo que se ve. Si el número de cotización es un 123 con formato personalizado que lo pinta como «COT-000123», .Value te daría 123 a secas. Contrapartida: si la columna es tan estrecha que la celda muestra ####, eso es lo que se llevará el nombre —ensánchala y listo— |
| El If del final | Si B2 está vacía, la ruta acabaría en una barra suelta y la macro muere con el mismo 1004 que queríamos evitar. Esa línea le pone el nombre de la hoja como respaldo |
Paso 4 · Ponle un botón
Vuelve a Excel. En Insertar › Formas dibuja un rectángulo, escríbele dentro «Crear PDF», y después clic derecho sobre la forma › Asignar macro › CrearPDF. A partir de ahí, un clic y listo.

La macro que trae el archivo, y en qué se diferencia de esta
Abre el archivo descargado, pulsa Alt + F11 y mira dentro de Módulo1. No vas a encontrar el código de arriba, sino este otro. Está a propósito: es una macro real, de las que circulan por ahí, y compararla con la de este artículo enseña más que cualquier explicación.
Sub CreaPDF()
Dim Archivo, NombreArchivo As String
Archivo = "Cotización" & Range("B10")
RutaArchivo = ActiveWorkbook.Path & "\" & Archivo & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End SubFunciona. Coge el nombre de la empresa de la celda B10, arma la ruta y exporta. Es exactamente la idea del Paso 3. Ahora mira las cinco cosas que le faltan, que son las cinco que hemos ido añadiendo:
| Lo que hace | Por qué importa |
|---|---|
| No limpia el nombre que saca de B10 | Si la empresa se llama «Transportes S.A. / Lima» o lleva dos puntos, la barra y los dos puntos no valen en un nombre de archivo y la macro muere con el error 1004. Es justo lo que resuelve el bucle de Replace |
| No comprueba ActiveWorkbook.Path | Si el libro no se ha guardado nunca, esa ruta está vacía y el PDF acaba donde nadie lo encuentra |
| Escribe la barra a mano | En Mac el separador es otro. Por eso arriba se usa Application.PathSeparator |
| Usa ActiveWorkbook y no ThisWorkbook | Si tienes otro libro por delante, el PDF se guarda en la carpeta de ese otro |
| Declara NombreArchivo y no lo usa; y RutaArchivo no la declara | Sin Option Explicit VBA no se queja, pero una errata al escribir el nombre de una variable te deja una ruta vacía sin ningún aviso |
Descarga el archivo y abre su módulo
Trae su propia macro, distinta de la de arriba. Compáralas: es el mejor ejercicio de todo el artículo.
Cotización en Excel con botón de PDF (caso práctico)
Cinco errores que arruinan el PDF
- Exportar sin mirar la vista previa de salto de página. Treinta segundos que te ahorran mandar un documento partido a un cliente.
- Usar «Ajustar hoja en una página» con una tabla larga. Cabe, sí, pero a un tamaño de letra que nadie lee. Ancho: 1 página y Alto: automático casi siempre es mejor.
- Arrastrar un área de impresión vieja. Si alguien definió un área hace meses y luego la tabla creció, el PDF sigue mostrando el rango antiguo y parece que faltan datos. Se borra en Diseño de página › Área de impresión › Borrar área de impresión.
- Dejar las fórmulas con errores a la vista. Un #¡DIV/0! o un #N/A se imprime tal cual en el PDF. Se ocultan en Diseño de página › Imprimir títulos —que abre el cuadro Configurar página, pestaña Hoja— y ahí pones Errores de celda como: <en blanco>.
- Olvidar que el PDF conserva los datos ocultos del archivo. Con IncludeDocProperties:=True viajan al PDF el autor y el título del documento. Si el PDF sale fuera de la empresa, revisa el Excel antes de exportar en Archivo › Información › Comprobar si hay problemas › Inspeccionar documento —esa herramienta mira el .xlsx, no el PDF, y una vez exportado ya no hay nada que hacer—, o pon IncludeDocProperties:=False en la macro.
Preguntas frecuentes
¿Se puede pasar Excel a PDF y que quede editable?
¿Por qué mi PDF pesa tanto?
Exporto y el PDF sale en blanco. ¿Qué pasa?
¿Puedo hacer esto en Excel para la web o en Google Sheets?
¿Y en Mac?
¿Cómo hago un PDF por cada hoja, automáticamente?
Y ahora, lo que viene después del PDF
Exportar bien es la mitad del trabajo. La otra mitad es que el documento que exportas tenga sentido: una cotización numerada, un flujo de caja que cuadre, un control de stock que no dependa de que alguien se acuerde de actualizarlo. Si te ha servido esto, aquí tienes plantillas gratis con esa parte ya montada:
- Cotización en Excel — cinco formas de armarla, con numeración automática. Es el documento que más se manda en PDF.
- Formulario para ingresar datos — para que los datos entren bien antes de imprimir nada.
- Todas las plantillas gratis del blog.
Cuando el reporte lo tienes que hacer todas las semanas
Una macro te ahorra el clic. Lo que no te ahorra es construir el reporte. Las plantillas premium traen los cálculos, los informes y el formato ya resueltos: tú cargas los movimientos y el documento sale hecho, listo para exportar. Pago único, licencia de por vida y videotutorial en cada una.
Funcionan en Microsoft Excel para Windows.
VER EL CATÁLOGO DE PLANTILLASVersiones premium
🎯 Deja de pelearte con Excel cada mes
Automatizadas y listas para usar: cobros, pagos, inventario, caja y proyectos. Pago único, acceso de por vida y funcionan sin internet.
Cuentas x Cobrar V1Registras la factura una vez y la plantilla te dice quien te debe, cuanto…USD 27Ver plantilla
Cuentas x Pagar V1Te avisa de lo que vence esta semana, para que no vuelvas a quedar…USD 27Ver plantilla
Control Flujo EfectivoCargas ingresos y gastos y ves de un vistazo si el mes cierra en…USD 27Ver plantilla
Macro Control Stock Basico V1Entradas, salidas y un panel que te avisa de lo que se esta agotando…USD 7Ver plantilla
Gestor de Cotizaciones o Proforma V1Eliges el cliente, eliges los productos y la cotizacion sale con tus datos y…USD 27Ver plantilla
Genera Orden de Compra o ServicioLa orden sale hecha, numerada y lista para enviar, sin copiar y pegar de…USD 27Ver plantilla
Curva S AutomatizadaCargas el avance y la curva se dibuja sola, con el programado y el…USD 20Ver plantilla

Deja una respuesta