Crear carpeta y guardar hoja en pdf

Agradecería ayuda necesito crear una macros que me cree una carpeta según el valor de la celda A1, al mismo tiempo quede guardada una hoja en pdf en esa misma carpeta nombrada con el valor de la celda A2 y guarde el archivo en formato habilitado para macros en la misma carpeta con el valor de la celda A3, quedaría muy agradecido

1 Respuesta

Respuesta
1

H o l a:

Te anexo la macro, cambia "Hoja1" por el nombre de la hoja que quieras guardar como pdf:

Sub GuardarPdf()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    carpeta = h1.[A1]
    aPdf = h1.[A2]
    aMacro = h1.[A3]
    If Dir(carpeta, vbDirectory) = "" Then MkDir carpeta
    If Right(carpeta, 1) <> "\" Then carpeta = carpeta & "\"
    h1.ExportAsFixedFormat Type:=xlTypePDF, Filename:=carpeta & aPdf & ".pdf"
    ActiveWorkbook.SaveCopyAs carpeta & aMacro & ".xlsm"
    MsgBox "Fin"
End Sub

primero muchas gracias por responder, no se porque no deja grabar te envio el archivo con el cual ando trabajando donde reemplazo las celdas a1 por la j9 a2 por laj7 y a3 por j8, nose si sea por lo largo del nombre o que puede suceder 

como puedo adjuntar un archivo para enviarte en lo que ando trabajando por favor?

En la imagen no veo las celdas j9, j7 ni j8, intenta con nombre cortos en las celdas.

Pon por ejemplo

En J9

c:\trabajo\nueva

En j7

Hoja

En j8

Macro

Y prueba nuevamente.

Te recuerdo que los nombres de archivo no pueden llevar ciertos caracteres como la diagonal /

Prueba la macro con los ejemplos que te estoy poniendo y si todo funciona recuerda valorar la respusta.

Envíame tu archivo, pero antes prueba con nombres cortos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Gabriel Romero” y el título de esta pregunta.

listo ya te lo envié, el archivo se llama formato de codificación, la hoja es la que se llama propuesta, no se si lo largo de los nombres puede ser lo que hace que falle, porque hay ocasiones donde si funciona, pero en el ejemplo que te mando no lo hace, toda la creación de la carpeta y los archivos es al oprimir el botón salir y guardar ubicado en la parte inferior de la hoja propuesta.

nota: los nombres deben ser largos porque corresponden a nombres de laboratorios y productos, quedo agradecido por tu atención 

Te anexo la macro actualizada

Sub GuardarPdf()
'Por.Dante Amor
    Set h1 = Sheets("PROPUESTA")
    carpeta = "C:\" & h1.[J9]
    aPdf = h1.[J7]
    aMacro = h1.[J8]
    If Dir(carpeta, vbDirectory) = "" Then MkDir carpeta
    If Right(carpeta, 1) <> "\" Then carpeta = carpeta & "\"
    h1.ExportAsFixedFormat Type:=xlTypePDF, Filename:=carpeta & aPdf & ".pdf"
    ActiveWorkbook.SaveCopyAs carpeta & aMacro & ".xlsm"
    MsgBox "Fin"
End Sub

Sal u dos

sigue apareciéndome el mismo error que mostré,anteriormente y me resalta eso,sera por lo la longitud del nombre?

mira los errores que aparecen,sera por la longitud del nombre????

Revisaste la celda D13 tienes esto:

"Adalata oros "

Al final del dato tienes un espacio, revisa que la información no tenga espacios al final:

"Adalata oros"

y que pena sera posible que la carpeta se cree en el escritorio por favor? 

En esta línea

carpeta = "C:\" & h1.[J9]

Agrega la carpeta de tu escritorio

carpeta = "C:\Documents and Settings\DAMOR\Escritorio\" & h1.[J9]

'

sal u dos

¿Okey al aparecer el error que ocurre es por ese espacioal final verdad?, ¿Existe forma de evitar eso? ¿Para qué la macro funcione siempre?

Con la instrucción trim:

Sub GuardarPdf()
'Por.Dante Amor
    Set h1 = Sheets("PROPUESTA")
    carpeta = "C:\trabajo\" & Trim(h1.[J9])
    aPdf = h1.[J7]
    aMacro = h1.[J8]
    If Dir(carpeta, vbDirectory) = "" Then MkDir carpeta
    If Right(carpeta, 1) <> "\" Then carpeta = carpeta & "\"
    h1.ExportAsFixedFormat Type:=xlTypePDF, Filename:=carpeta & aPdf & ".pdf"
    ActiveWorkbook.SaveCopyAs carpeta & aMacro & ".xlsm"
    MsgBox "Fin"
End Sub

recuerda poner tu carpeta

pongo en trabajo, escritorio y dice que no encuentra ruta 

Necesito que cada vez que se oprime el botón se cree una carpeta en el escritorio por favor

Tienes que poner la carpeta completa

carpeta = "C:\trabajo\" & Trim(h1.[J9])

o escoge otra carpeta, por ejemplo:

carpeta = "C:\Documents and Settings\DAMOR\Escritorio\" & h1.[J9]

Yo no sé dónde está tu carpeta, puedes poner otra, crea una nueva:

carpeta = "C:\archivos\pdfs\respaldo\" & h1.[J9]

Si quieres una función para que investigue cómo se llama tu carpeta de escritorio, crea una nueva pregunta.

Ya en esta pregunta tenías varias peticiones:

1. Crear carpeta

2. Crear pdf

3. Guardar archivo de macro

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor"

Sal u dos

si que pena preguntar tanto, lo que necesito es que la carpeta creada quede en el escritorio no dentro de una carpeta, osea que cada vez que prima el boton se cree la carpeta con el nombre de la celda j9, pero no hay problema si quieres creo otra pregunta para eso, quedo atento 

No te preocupes, puedes realizar todas las preguntas que quieras, pero siempre crea una pregunta por cada petición. Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas