Ejecutar macro cuando se haya cargado toda la información en excel 2007

Hola,

tengo una macro que me copia información desde outlook y me la pega en un documento excel de mi equipo.

He creado una macro en la propia excel para que dé formato a esa información importada. Para que esta macro (OrganizarInfo) se ejecute tras la carga de los datos desde outlook, le he añadido esto:

Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:06"), "OrganizarInfo"
End Sub

Antes tenía puesto 5 segundos pero no le daba tiempo a cargar todo y la información mostrada estaba incompleta. Ahora con 6 segundos se me carga toda la información, pero la carpeta de correo va creciendo.

¿Existe alguna forma de pedirle que se cargue la segunda macro (OrganizarInfo) sólo después de que toda la información se haya cargado en la excel?

Gracias,

1 respuesta

Respuesta
1

Te propongo una posible solución: que a tu primer macro, la que copia información desde Outlook, le agregues una línea al final del proceso donde marque una variable con valor 1, por ej:

valOut = 1

Entonces tu 2da macro, OrganizaInfo, antes de comenzar con el proceso, consulta el valor de esa variable, si no es 1 cancela.

If valOut <> 1 then exit sub

No debes olvidar declarar la variable como pública al inicio de algún módulo:

Public valOut as Byte

Espero te sirva la idea.

Sdos

Elsa

Hola Elsa,

la solución es perfecta, pero no consigo hacerlo funcionar.

Es la segunda macro la que deja de funcionar, no tengo ni idea de por qué.

No es así como debería ir?

Sub OrganizarInfo()
If valOut <> 1 Then Exit Sub

Range("A1".Select

Muchísimas gracias por la ayuda.

Lo único que veo es que al Range le falta un paréntesis... por lo demás si definiste la variable como Byte no debiera darte problemas.

Sdos!

Hola Elsa, me olvidé del paréntesis en el mensaje, pero en el código está bien escrito en excel.

He declarado la variable como Byte, pero no funciona. La primera macro se ejecuta, pero la segunda no (cuando le añado If valOut <> 1 Then Exit Sub).

He probado también a añadir el código en ThisWorkbook, donde le digo que ejecute automáticamente la segunda macro, la que me ordena la información.

Está así:

    Private Sub Workbook_Open()
    If valOut <> 1 Then Exit Sub
    OrganizarInfo
    End Sub

Pero me ocurre lo mismo, se ejecuta la primera macro, la de exportación a excel, pero la segunda (Organizarinfo) no. 

Esto último no va a funcionar porque al abrir el libro siempre la variable está vacía o 0.

Te dejo en imágenes cómo debiera utilizarse la variable. Por supuesto esto es en teoría:

Revisa que las macros no contengan ninguna instrucción que cancele los eventos, ¿algo así como EnableEvents =?

Sdos!

Gracias Elsa, no encuentro dónde está el fallo, pero si añado el If, la segunda macro ya no funciona. No hay enableEvents.

Gracias de todas formas por tu ayuda, seguiré probando.

Saludos,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas