Ejecutar macro al salir de hoja activa

Tengo una macro en una hoja excel que se llama "precios" (dentro de un libro de 5 hojas)

Esta macro crea un PDF de la hoja "precios" y lo guarda en pdf cada vez que la ejecuto

Private Sub Worksheet_Deactivate()
Sheets("PRECIOS").Select
Application.ScreenUpdating = False
Call CreaPDF
Application.ScreenUpdating = True
End Sub

Con lo sencillo que parece se traba mucho 

¿Hay algo que pueda estar mal planteado?

2 respuestas

Respuesta
1

Pon lo siguiente en los eventos de tu hoja precios:

Private Sub Worksheet_Deactivate()
  Call CreaPDF("precios")
End Sub

Pon el siguiente código en la misma hoja precios o en un módulo:

Sub CreaPDF(nombre As String)
  Dim RutaArchivo As String
  RutaArchivo = ActiveWorkbook.Path & "\" & nombre & ".pdf"
  Sheets(nombre).ExportAsFixedFormat xlTypePDF, RutaArchivo, xlQualityStandard, True, False, , , False
End Sub

De esa manera pasas como parámetro el nombre de la hoja que quieres en pdf.

Entonces cuando estás en la hoja "precios" y seleccionas la hoja "albarán", te genera el pdf de la hoja "precios" pero permaneces en la hoja "albarán" (o la hoja que hayas seleccionado).

[No olvides valorar la respuesta, también tienes otras pendientes por valorar. 

Respuesta
1

¿Qué quieres decir que se traba mucho?

¿Te da algún error?

Pon aquí la otra parte, la macro CrearPDF para ver como tienes el código.

Sub CreaPDF()
Dim NombreArchivo, RutaArchivo As String
NombreArchivo = ActiveSheet.Name
RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Crea el pdf de la hoja de destino 

Osea al pasar de la hoja "precios" a hoja "Albaran" crea el pdf de la hoja "Albaran"

Yo quiero que cree el pdf de la hoja "perecios" a salir de ella

2º cuando digo que se traba es que tarda en ejecutar, y esto no me pasa con ninguna otra macro

El error es que crea la hoja de la hoja de destino

Ejemplo: Cuando paso de hoja de "precios" a hoja "Albaran" crea pdf de la hoja "Albaran"

Yo quiero que cuando salgo de la hoja "precios" cree una copia en pdf de esta hoja "precios"

2º Tambien tarda en ejecutarse, ya que empieza a salir la barra de porcentaje con el tiempo que falta para completarse

He probado tal como la tienes y me funciona, de todos modos le hice unos cambios para que pruebes.

Private Sub Worksheet_Deactivate()
 Call CreaPDF
End Sub
Sub CreaPDF()
Dim NombreArchivo, RutaArchivo As String
Sheets("Precios").Select
NombreArchivo = ActiveSheet.Name
Application.ScreenUpdating = False
RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Application.ScreenUpdating = True
End Sub

Va bien de velocidad, pero no crea el pdf a salir de la hoja "precios"

Crea el pdf cuando entro en "precios" es necesario que lo cree al salir, ya que cuando entro es para actualizar precios o colocar artículos nuevos con su precio

Veo que ya lo tienes resuelto, me alegro, mejor imposible.

Salu2 Carlos Arrocha

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas