Imprimir página | Cerrar ventana

Guardar/Imprimir en PDF/nombre desde la hoja

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86463
Fecha de impresión: 26/Marzo/2026 a las 20:58


Tema: Guardar/Imprimir en PDF/nombre desde la hoja
Publicado por: Gladiador
Asunto: Guardar/Imprimir en PDF/nombre desde la hoja
Fecha de publicación: 14/Septiembre/2022 a las 16:32
Hola amigos, nuevamente con una consulta.

Tengo un cuadro/tabla el cual debo Guardar/Imprimir en PDF con nombre tomado desde la misma hoja de excel (correlativo + fecha).
Quisiera generar una macro que guarde esa impresión con el nombre que está en una celda.

Gracias



Respuestas:
Publicado por: sdgm
Fecha de publicación: 14/Septiembre/2022 a las 17:45
Hola, Gladiador.

La grabadora de macros te puede dar las líneas que necesitas, pero tendrás que personalizar algunas cosas.

Primero, suponiendo que en A1 tengas la fecha y en B1 el correlativo, tendrás que armar el nombre del archivo:
    Dim NombrePDF As String
    NombrePDF = Range("A1").Value & " - " & Range("B1").Value
    NombrePDF = Replace(Replace(NombrePDF, "/", "-"), ":", ",") & ".pdf"

Observa que estoy reemplazando las diagonales y los dos puntos (que no pueden ser parte del nombre de un archivo) por guiones y comas.  Cámbialos conforme te sea necesario.

Segundo, estableces el área de impresión y ejecutas la exportación (recuerda que al exportar a pdf, lo que se enviará a éste último es lo que normalmente imprimirías de tu hoja):
    Sheets("Hoja1").PageSetup.PrintArea = "$A$2:$F$11"
    Sheets("Hoja1").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\Informe " & _
                  NombrePDF, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

Finalmente, incrementas el contador y restauras el área de impresión:
    Sheets("Hoja1").Range("B1").Value = Range("B1").Value + 1
    Sheets("Hoja1").PageSetup.PrintArea = ""

Pruébalo, y comentas.

Saludos...



-------------
Cordialmente, David


Publicado por: Gladiador
Fecha de publicación: 14/Septiembre/2022 a las 23:18
Hola sdgm 
Gracias por tu sugerencia, me funciona muy bien excepto que la ruta de guardado es un par de subcarpetas luego de la ruta del libro original. Es decir ThisWorkbook.Path & "\Reportes\2022\Sept "
    (*)

Parecerá tonto, pero no he podido hacer que guarde en la carpeta correspondiente, solo guarda en la carpeta Reportes. Por muchas manera en que lo intenté, no pude saber que no estoy haciendo correctamente.

Solo logré hacerlo, colocando la ruta y el nombre en la celda D1

     "C:\Users\Carlos\Documents\Trabajo\Reportes\2022\Sept"&A1&"-"&B1 & ".pdf"

Por lo tanto NombrePDF = Range("D1"). value
y la línea quedó:
      Filename: = NombrePDF _

Si me pudieras aclarar donde está mi error en la instrucción (*) lo agradecería


Publicado por: sdgm
Fecha de publicación: 14/Septiembre/2022 a las 23:40
Lo mejor sería ver lo que tu macro genera.  Debe ser algún caracter no válido o equivocado en algún lado, o alguna notación propia de documentos en la nube (¿?).  

Prueba mostrar el valor de NombrePDF en tu código original:

Range("Z1").value = NombrePDF

y nos copias el resultado.


-------------
Cordialmente, David


Publicado por: Gladiador
Fecha de publicación: 14/Octubre/2022 a las 18:52
Hola, gracias a todos por la colaboración.
Creo que se puede cerrar el hilo
Gracias



Imprimir página | Cerrar ventana