Macro para guardar en pdf

Quisiera saber como hacer una macro que me exporte en pdf un rango determinado de una hoja de excel Ejm ( de A1 a H20 ) y lo guarde con un nombre consecutivo Ejm. Control_0001 y cuando vuelva a guardar otro archivo ya sea control_0002 y así consecutivamente.

1 respuesta

Respuesta
2

Te anexo la macro. Antes de ejecutarla deberás crear una hoja llamada "consecutivo", ejecuta la macro en la hoja en la que tengas el rango que quieras exportar al pdf. El archivo se guardará en la misma carpeta de tu archivo.

Sub GuardarPdf()
'Por.Dante Amor
    ruta = ThisWorkbook.Path & "\"
    n = Sheets("Consecutivo").[A1] + 1
    arch = "Control_" & Format(n, "0000")
    Range("A1:H20").ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & arch & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    Sheets("Consecutivo").[A1] = n
    ActiveWorkbook.Save
End Sub

Muchísimas gracias por la respuesta, me sirvió mucho. Solo una duda, al momento de presionar el botón para que genere el pdf lo realiza bien, el nombre lo coloca bien pero en el pdf se muestra un retraso en el contador, ejm en el archivo aparece 0002 y el pdf aparece 0001. Al código no le moví nada. De antemano Gracias! 

Revísalo bien, el último archivo debe ser Control0002 y en consecutivo debes tener 2, cuando generes el siguiente tendrás Control0003 y en consecutivo 3.

Así es, en el archivo de Excel y en el nombre del archivo pdf están bien los datos, Ejm. en el archivo el contador aparece 0002, en el nombre control_0002.pdf pero en el archivo pdf aparece el contador 0001, no entiendo porque si se supone que convierte la hoja de excel en pdf y exporta los datos que ahí aparece.

Se podría agregar la función para adjuntar el archivo creado para enviar por correo electrónico?. Encontre un código pero me adjunta toda la hoja pero necesito que sea el archivo creado.

Nuevamente muchísimas gracias por el apoyo, Saludos 

Pero el consecutivo lo toma de la hoja "consecutivo", lo anterior lo hace la macro, porque nunca explicaste de dónde debería tomar el número consecutivo. Lo único que pediste es que se exportara a pdf un rango y lo guardara con un consecutivo.

Si quieres que se guarde con el número que tienes en alguna celda, deberás poner solamente el número en la celda

Utiliza esta macro

Sub GuardarPdf()
'Por.Dante Amor
    Set celda = Sheets("hoja1").[G8]
    '
    ruta = ThisWorkbook.Path & "\"
    n = celda.Value
    arch = "Control_" & Format(n, "0000")
    Range("A1:H20").ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & arch & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    celda.Value = n + 1
    ActiveWorkbook.Save
End Sub

En esta línea de la macro, cambia "hoja1" por el nombre de tu hoja, y cambia "G8" por la celda en donde tengas tu consecutivo.

Set celda = Sheets("hoja1").[G8]

Con gusto te apoyo con la macro para enviar el PDF por correo, pero primero valora esta pregunta y crea una nueva pregunta por cada petición, si gustas, al fnal del título de la nueva pregunta puedes poner que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas