Macro Excel: ¿Cómo generar un PDF solo de las celdas que contengan datos?

Estoy haciendo una plantilla de cotizaciones en excel y quiero guardar en PDF solo las celdas con datos.

Estuve usando el siguiente macro:

Sub GenerarPDF ()
nombre = Range("H3") & "-" & Range("D7").Value
Range("A1:H69").Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\Usuarios\Sussan\Desktop\COTIZACIONES 2017\" & nombre, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Range("A1").Select
End Sub

Como ven, está macro solo me permite guardar en un rango de A1:H69, pero como es una plantilla de cotización la cantidad de productos a cotizar pueden ser bastantes.

1 respuesta

Respuesta
1

Prueba con lo siguiente.

Sub GenerarPDF()
    nombre = Range("H3") & "-" & Range("D7").Value
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Range("A1:H" & u).Select
    Selection.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:="D:\Usuarios\Sussan\Desktop\COTIZACIONES 2017\" & nombre, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    Range("A1").Select
End Sub

¡Genial, gracias! Funcionó perfectamente :D

Disculpa si abuso de tu ayuda, pero ¿También se podría hacer lo mismo para guardar en excel solo las celdas con datos?

¿Te refieres a crear un archivo de excel?

¿Lo qué quieres es guardar solamente esa hoja en un archivo nuevo de excel?

Claro, guardar esa hoja en un nuevo archivo excel solo las celdas con datos, pero manteniendo el formato de la plantilla.

Con esta macro

Sub GenerarXls()
    nombre = Range("H3") & "-" & Range("D7").Value
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:= _
        "D:\Usuarios\Sussan\Desktop\COTIZACIONES 2017\" & nombre & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

sal u dos

¡Gracias! Funciona perfecto :D 

Hola!

Estoy teniendo problemas con el código para guardar en PDF. Se demorá un enternidad para guardar. Se queda cargando hasta que que me sale un error de que Excel no responde y se cierra el programa

Este es el código que estoy usando

Sub GuardarPDF()
    nombre = Range("H3") & "-" & Range("D7").Value
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Range("A1:H" & u).Select
    Selection.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:="D:\Usuarios\Sussan\Desktop\COTIZACIONES 2017\" & nombre, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
  End Sub

Intenta lo siguiente:

Suponiendo que tu hoja con datos es la "Hoja1"

- Crea una nueva hoja

- Selecciona la "Hoja1", copia desde la celda A1 hasta la última fila y última columna que contenga datos, ahora selecciona la hoja nueva, selecciona la celda A1 y pega

- Ejecuta la macro sobre la nueva hoja

Hice lo que dijiste pero sigue demorando en generar el PDF.

Cuando el rango lo pongo así el pdf se genera rápido, lo malo es que me salen varias páginas en blanco porque no hay datos.

Range("A1:H200").Select

Por eso debes crear una nueva hoja donde pegues solamente datos. Lo que pasa con tu "hoja1" es que tienes demasiadas celdas en blanco que alguna vez fueron utilizadas y excel detecta la última celda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas