Necesito crear macro que guarde en PDF y que cambie nombre según una celda

Tengo la siguiente problemática. Necesito realizar una macro que convierta una pestaña en puntual "Hoja1 (Planilla)" a PDF, pero que cada ves que guarde (en escritorio) cambie su nombre según una celda.

En este caso es una planilla para realizar cotizaciones, entonces en la celda "B2" tengo el folio, y debería guardar así el nombre "Cotización N°786".

Ademas que cuando finalice, arroje una ventana de aviso, diciendo "Se ha guardado la Cotización n°786 en su escritorio".

Favor su ayuda, estaría eternamente agradecido.

Saludos a todos.

Respuesta
6

Te anexo la macro.

Instrucciones para ejecutar macro1. Abre tu hoja de excel2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F113. En el menú elige Insertar / Módulo4. En el panel del lado derecho copia la macro5. Para ejecutarla presiona F5

Si quieres un botón para ejecutar la macro.

Instrucciones para un botón y ejecutar la macro1. Abre tu libro de Excel2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F113. En el menú elige Insertar / Módulo4. En el panel del lado derecho copia la macro5. Ahora para crear un botón, puedes hacer lo siguiente:6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas7. 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 Aceptar.9. Para ejecutarla dale click a la imagen.

Sub guardapdf()'Por daM    Ruta = "C:\"    nombre = Ruta & "Cotización N°" & Worksheets("Hoja1 (Planilla)").Range("B2") & ".pdf"    Worksheets("Hoja1 (Planilla)").ExportAsFixedFormat Type:=xlTypePDF, _    Filename:=nombre, _    Quality:=xlQualityStandard, _    IncludeDocProperties:=True, IgnorePrintAreas:=False, _    OpenAfterPublish:=True     MsgBox "Se ha guardado la Cotización n°" & Worksheets("Hoja1 (Planilla)").Range("B2") & " en su escritorio" End Sub

Cambia esta línea

Ruta = "C:\"

Por la ruta donde se encuentra tu escritorio, por ejemplo

Ruta = "C:\Documents and Settings\DAMOR\Escritorio\"

No olvides poner la diagonal \ al final de tu ruta

Saludos. Dam

Si es lo que necesitas, podrías cerrar la pregunta.

Amigo, muchas gracias por tu respuesta.. pero tengo el siguiente conflicto.

al modificarla como me indicas, quedaría así

Sub guardapdf()
Ruta = "C:\Users\mferrada\Desktop\" nombre = Ruta & "Cotización N°" & Worksheets("Hoja1 (Planilla)").Range("B2") & ".pdf" Worksheets("Hoja1 (Planilla)").ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=nombre, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True MsgBox "Se ha guardado la Cotización n°" & Worksheets("Hoja1 (Planilla)").Range("B2") & " en su escritorio"
End Sub

Pero me arroja error de compilación.

otra duda: Si yo quiero enviarle esta planilla a otra persona, deberé modificar el código según la ruta que tenga para su escritorio?....

Perdona, pero algo pasó con lo que te envié.

Te anexo nuevamente la macro

'***Macro***
Sub guardapdf()
'Por daM
    Ruta = "C:\"
    nombre = Ruta & "Cotización N°" & Worksheets("Hoja1 (Planilla)").Range("B2") & ".pdf"
    Worksheets("Hoja1 (Planilla)").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=nombre, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
    MsgBox "Se ha guardado la Cotización n°" & Worksheets("Hoja1 (Planilla)").Range("B2") & " en su escritorio"
End Sub

y las instrucciones

Instrucciones para ejecutar macro
1. Abre tu hoja 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. Para ejecutarla presiona F5

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, Aceptar.
9. Para ejecutarla dale click a la imagen.

Para lo último que preguntas, es correcto, deberás actualizar la ruta según la tenga para su escritorio.
Vuelve a probar y me dices.
Saludos. Dam

Dam.

Armo la macro como me indicas y queda así.

Sub guardapdf() 'Por daM Ruta = "C:\Users\mferrada\Desktop\" nombre = Ruta & "Cotización N°" & Worksheets("Hoja1 (Planilla)").Range("B2") & ".pdf" Worksheets("Hoja1 (Planilla)").ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=nombre, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True MsgBox "Se ha guardado la Cotización n°" & Worksheets("Hoja1 (Planilla)").Range("B2") & " en su escritorio"
End Sub

Pero al ejecutarla me vuelve a dar el mismo error "9 en tiempo de ejecución, Subíndice fuera de intervalo".

Al depurar me destaca la siguiente fila

nombre = Ruta & "Cotización N°" & Worksheets("Hoja1 (Planilla)").Range("B2") & ".pdf"

Al copiarla no está cortando bien los renglones, y por eso está toda amontonada, cópiala primero en un documento de Word, cópiala del Word y ahora pégala en el panel de Vba.

Debes verla con renglones separados, como se muestra:

'***Macro***
Sub guardapdf()
'Por daM
Ruta = "C:\"
nombre = Ruta & "Cotización N°" & Worksheets("Hoja1 (Planilla)").Range("B2") & ".pdf"
Worksheets("Hoja1 (Planilla)").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=nombre, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
MsgBox "Se ha guardado la Cotización n°" & Worksheets("Hoja1 (Planilla)").Range("B2") & " en su escritorio"
End Sub

me sigue dando error la misma linea, que otra cosa puedo estar haciendo mal?

Tal vez tu hoja no se llama exactamente igual al nombre que me diste, podrías elegir un nombre más corto y menos complicado.

Dice:

"Hoja1 (Planilla)"

Puedes ponerle :

"plan"

Si tienes problemas, envíame tu archivo a [email protected]
En el asunto del correo escribe tu clave de usuario y el título de esta pregunta.
Avísame en esta pregunta cuando me lo hayas enviado.
Saludos. Dam

Aun nada, así que te envíe mi archivo a tu correo....

espero que me puedas ayudar.

Saludos y muchísimas gracias.

Ya te envié a tu correo el archivo corregido y unos comentarios.

Saludos. Dam
Si es lo que necesitas.

1 respuesta más de otro experto

Respuesta

Sería bueno si publicas cual es el error de la compilación así para que sea completa tu información ya que sería de mucha ayuda para mi.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas