** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Guardar/Imprimir en PDF/nombre desde la hoja
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Guardar/Imprimir en PDF/nombre desde la hoja

 Responder Responder
Autor
Mensaje
Gladiador Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Junio/2006
Localización: Venezuela
Estado: Sin conexión
Puntos: 220
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Gladiador Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Guardar/Imprimir en PDF/nombre desde la hoja
    Enviado: 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
Arriba
sdgm Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 21/Abril/2005
Localización: Guatemala
Estado: Sin conexión
Puntos: 928
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita sdgm Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
Gladiador Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Junio/2006
Localización: Venezuela
Estado: Sin conexión
Puntos: 220
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Gladiador Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
sdgm Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 21/Abril/2005
Localización: Guatemala
Estado: Sin conexión
Puntos: 928
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita sdgm Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
Gladiador Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Junio/2006
Localización: Venezuela
Estado: Sin conexión
Puntos: 220
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Gladiador Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Octubre/2022 a las 18:52
Hola, gracias a todos por la colaboración.
Creo que se puede cerrar el hilo
Gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable