Jump to content

Archived

This topic is now archived and is closed to further replies.

joselica

Macro para guardar enPDF con nombre celda

Recommended Posts

Buenas  atodos,

Lo que busco es una tonteria que no lo veo...

He creado una macro en lo cual pretendo que el PDF resultante salga con el nombre de la celda B31.

Sub SavePDF()
'
' SavePDF Macro
'

'
    ChDir "C:\Users\JOSE-X\Desktop\OBJETOS PERDIDOS - test\PDF"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\JOSE-X\Desktop\OBJETOS PERDIDOS - test\PDF\Objeto Nº.pdf", Quality _
        :=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
        
        Range("E4").ClearContents
        Range("D18").ClearContents
        Range("D20").ClearContents
        
End Sub

Adjunto el documento que funciona pero no consigo poner la formula para que me salga los datos de la celda B31.

La verdad es que cada vez que hago la modificación para que me salga el nombre al comprobar la macro me sale "debug"

Gracias de antemano por vuestra ayuda.

OBJETOS PERDIDOS c.xlsm

Link to post
Share on other sites

hola @joselica

No he podido acceder al archivo, me da error la página. No obstante, te sugiero un código para salir del paso.

Revisa tus datos y si fuesen diferentes a los del ejemplo, reemplaza:

1) la ruta donde quieres dejar el archivo (reemplaza dónde dice ActiveWorkbook.Path & "\").

2) el nombre la hoja donde está la celda "B31" con el dato (reemplaza dónde dice Sheets("Hoja1"))

En el ejemplo, el archivo pdf queda en la misma carpeta donde se encuentre el archivo Excel.

Prueba y comenta, por favor.

Que tengas una buena jornada!


'declarar las variables
Public cruta1 as String
Public cnombre1 As String,

'denominar las variables
cruta1 = ActiveWorkbook.Path & "\"
cnombre1 = Sheets("Hoja1").Range("B31")

'código a reemplazar
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=cruta1 & cnombre1 & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

 

Link to post
Share on other sites

Hola tierra_pampa,

Gracias por tu tiempo.

Ahorra veo que los archivos no deben de sobrepasar 0,01 MB. El mio pesa 794 KB.

Te adjunto de nuevo la macro tal como lo tengo: y si funciona (no me sale el nombre que quiero, pero me sale con "Objeto Nº" que ya es mucho)

Sub SavePDF()
'
' SavePDF Macro
'

'
    ChDir "C:\Users\JOSE-X\Desktop\OBJETOS PERDIDOS - test\PDF"
    
    FN = ActiveSheet.Range("B31").Value
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\JOSE-X\Desktop\OBJETOS PERDIDOS - test\PDF\Objeto Nº el FN deberia de ponerso aqui  .pdf", Quality _
        :=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
        
        Range("E4").ClearContents
        Range("D18").ClearContents
        Range("D20").ClearContents
        
End Sub

 

Aqui tienes lo que me has pasado: no funciona....me da eroor en.....

   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=cruta1 & cnombre1 & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Lo raro es que tengo uno otro documento que si funciona y este no hay manera......si tuviera la posibilidad de enviarte el documento dimelo.

 

Que pase un buen dia.

Saludos     

Link to post
Share on other sites

Hola tierra_pampa,

Mil gracias por tu ayuda. Funciona en tu plantilla.

He copiado y pegado tu macro en mi plantilla. No va...

He ido comprobando con F8 la macro y me da "debug" en lo siguiente:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=cruta1 & cnombre1 & FN & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Probare otras cosas, pero como no entiendo mucho....me bloqueo....estoy seguro que es una tonteria que yo no veo.

Ademas la plantilla me funciona de maravilla sin el tema del nombre. Se guarda correctamente, pero claro me borra la anterior y me coloca la nueva...ya me entiendes.

No se si te ayudaria y perderas menos tiempo si te envio el documento por otro canal....lo más estraño es que he creado uno para confirmaciones de reserva que va de maravilla, pero la misma formula de esta macro no me sirve en la nueva plantilla....

Otra vez mil gracias por tu tiempo y ayuda.

 

Una abrazo fuerte desde España

Jose

Link to post
Share on other sites

Hola @joselica

Puedes dejar la planilla en un servidor libre cualquiera (Dropbox, Google, etc.) y poner el link en el post. Así, estará disponible para todos los que quieran consultarlo hasta que lo elimines.

No obstante, vamos a intentarlo una vez más. Al usar variables, lo que estás haciendo guardar en ella un valor.Entonces, si en la variable "cruta1" guardas la dirección a una ruta que exista en tu PC, funcionará sin problemas.
Si te fijas bien, a dicha variable le estoy dando el valor original para tu máquina ("cruta1 = "C:\Users\JOSE-X\Desktop\OBJETOS PERDIDOS - test\PDF\"") y un poco más abajo -para hacer una prueba en mi máquina- le asigné otro valor ("C:\lm\zvarios\")...que me olvide de borrar...mil disculpas

Borra la línea que asigna el segundo valor; debe quedar cómo el código que acompaño en este post.

Prueba y comenta, estaré esperando.

 

'Declaramos las variables
Public cruta1 As String
Public cnombre1 As String

Sub SavePDF()

'ahora determinamos el valor de cada variable
cnombre1 = "Objeto Nº "
FN = ActiveSheet.Range("B31")
cruta1 = "C:\Users\JOSE-X\Desktop\OBJETOS PERDIDOS - test\PDF\"

'ahora usamos las tres (3) variables
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=cruta1 & cnombre1 & FN & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

'continúa tu código...
Range("E4").ClearContents
Range("D18").ClearContents
Range("D20").ClearContents
End Sub

 

Link to post
Share on other sites

hola @joselica

El problema consiste en querer guardar un archivo con caracteres no permitidos, en tu caso la barra de la fecha "/".

Comparto el link dónde dejo el mismo archivo, un poquito corregido.

https://www.dropbox.com/s/ynxfdm6o3pf2qrv/ae20170218OBJETOS PERDIDOS c.xlsm?dl=0

Prueba y comenta, por favor.

Que tengas una buena jornada!

Pd.: mi abuelo, antes de venir a vivir a Argentina residía en Betanzos (La Coruña), y siempre me contaba de lo hermoso que era su terruño. Abrazo desde la llanura pampeana!

Link to post
Share on other sites

Hola tierre_pampa,

Lo has clavado.

Hare la prueba en el documento original y te matendre informado.

Un detalle quiero que me aclares. ¿En la macro, los textos que aparecen en color verde los puedo borrar?(hay tus consejos y parte de la formula) Supongo que si, pero no quiero hacerlo hasta que me digas algo. Ya he sufrido bastante hasta clavarlo con tu ayuda.

Yo vivo en Catalunya en L'Ampolla (de momento) ya que me gusta más L'Ametlla de Mar (unpueblo de al lado) por sus calas bonitas.

Entiendo muy bien lo de tu abuelo....yo tambien he dejado mi tierra natal (Rumania) hace casi 2 decadas...

Bueno ya quedamos a charlar otro dia...otra vez mil gracias por tu tiempo y ayuda.

En cuanto hare las pruebas finales te informare de como ha ido todo.

Un abrazo muy fuerte.

Jose

Link to post
Share on other sites

Hola @joselica!

Hace 13 horas, joselica dijo:

¿En la macro, los textos que aparecen en color verde los puedo borrar?(hay tus consejos y parte de la formula)

Efectivamente los puedes borrar y no tendrás ningún problema al ejecutar el código. Tienen por objeto hacer más práctico el código por si más adelante necesitas alguna modificación; no molestan en la ejecución, son solo visibles para quien lee el código y se pueden lograr de varias maneras:

Anteponiendo el apóstrofo (comilla simple) al comentario, tanto sea por delante o en la parte de atrás de la línea de código; desde la barra de herramientas eligiendo el icono "Bloque con comentarios" o la palabra "REM".

Los recomendados por la ayuda de Microsoft son los dos primeros, ya que expresa que son más fáciles de utilizar y requieren menos espacio y memoria.

Te dejo un ejemplo:


'con esta línea de código seleccionamos la hoja "Insert"
Sheets("Insert").Select

Sheets("Insert").Select 'con esta línea de código seleccionamos la hoja "Insert"

REM con esta línea de código seleccionamos la hoja "Insert"
Sheets("Insert").Select

En tu archivo, me adapté a tu idea y no quise borrar el código que ya estaba; por ello le puse el apóstrofo por delante. Revisa y verás que algo de lo anulado es el ordenamiento de la hoja luego de introducir un registro. Antes se grababa el registro en una fila remota (quedando filas en blanco en el medio), y se ordenaba la tabla para acomodarla. Ahora el código busca la última fila libre en la hoja a guardar, y luego pega el texto que introduce el usuario. No creí necesario ordenar la tabla (que ya queda ordenada por el número de reclamo); pero tampoco lo quise borrar por si tu decidías otra cosa.

Si crees que hemos terminado con esta solicitud, pues expresa simplemente que el tema esta solucionado y nos vemos cuándo exista otra oportunidad!

Abrazo muy fuerte.

Que tengas una buena jornada

Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy