Macro para exportar a pdf

Les comento, tengo una hoja de calculo en excel y quiero crear una macro para que me exporte a pdf un rango de esa hoja por ejemplo, de la columna A a la M (el resto de las columnas que no la exporte) y a su vez que ese archivo en pdf se me guarde con el nombre de dos celdas por ejemplo, celda B3 ("Pedido") y "-" Q3 (16-06-2014), cosa que al guardarse quede con este nombre Pedido - 16-06-2014.pdf

De ser posible explíquenme desde cero como lo tengo que crear y si tengo que agregar algún botón en la hoja de calculo para guardarlo desde ahi y no con el botón guardar de excel.

2 respuestas

Respuesta
8

Sigue las Instrucciones para un botón y
ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: guardapdf
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub guardapdf()
'Por.DAM
uf = ActiveCell.SpecialCells(xlLastCell).Row
ru = ThisWorkbook.Path & "\"
 Range("A1:M" & uf).Select
 Selection.ExportAsFixedFormat Type:=xlTypePDF, _
 Filename:=ru & Range("B3") & " - " & Format(Range("Q3"), "dd-mm-yyyy") & ".pdf", _
 Quality:=xlQualityStandard, IncludeDocProperties:=True, _
 IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Saludos. Dante Amor
No olvides finalizar la pregunta.

Gracias una vez mas Dante, esta perfecto. Dos cositas mas la primera como hago para achicar la cantidad de filas que toma la selección que hiciste? porque me guarda una hoja en blanco, tendría q seleccionar hasta la fila 136 y me selecciona como hasta la 148.

Y lo otro como puedo agregar al código una ruta para que se guarden los archivos en una carpeta determinada, por ejemplo: C:\Users\USUARIO\Desktop\Pedido

y me olvide que una celda se valla sumando al guardar por ejemplo la celda A3 (es un numero) 00000001 al guardar que me sume uno 0000002 y asi sucesivamente.

La macro quedaría así:

Sub guardapdf()
'Por.DAM
uf = range("A" & rows.ocunt).end(xlup).row
ru =  "C:\Users\USUARIO\Desktop\Pedido\"
 Range("A1:M" & uf).Select
 Selection.ExportAsFixedFormat Type:=xlTypePDF, _
 Filename:=ru & Range("B3") & " - " & Format(Range("Q3"), "dd-mm-yyyy") & ".pdf", _
 Quality:=xlQualityStandard, IncludeDocProperties:=True, _
 IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Cambia en esta línea la letra "A" por la columna en donde siempre tengas el último dato.

range("A" & rows.ocunt).end(xlup).row

Para guardar en una ruta específica es en esta parte:

ru = "C:\Users\USUARIO\Desktop\Pedido\"

no entendí lo de la letra A la tabla va de A1 a M136

De todas esas letras de la A a la M dime cuál de esas columnas siempre tiene datos

Esa columna que me digas la pones en la macro. Ejemplo: si me dices que la columna B siempre es la que tiene datos entonces la macro quedaría así

Sub guardapdf()
'Por.DAM
uf = range("B" & rows.ocunt).end(xlup).row
ru = "C:\Users\USUARIO\Desktop\Pedido\"
Range("A1:M" & uf).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ru & Range("B3") & " - " & Format(Range("Q3"), "dd-mm-yyyy") & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Con la información que me diste modifiqué la macro en esta línea

uf = range("B" & rows.ocunt).end(xlup).row

todas tienen siempre datos pero hay algunas celdas vacías, yo cuando pongo M me tira un error

Entonces pon la letra A

Respuesta
1

Je je... me sirvió la solución que diste a publico y lo pude aplicar a una que necesitaba para mi trabajo... agradecido (a quien pregunto y a quien respondió)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas