No se ejecuta Workbook_Open si hay otro libro abierto

Lo arriba indicado, si tengo cualquier otro libro de excel abierto, tenga o no macros, cuando abro mi libro no se ejecuta el evento.  Private Sub Workbook_Open(), tampoco se ejecuta el Private Sub Workbook_Activate()

Curiosamente, la primera vez que lo abro si lo ejecuta, pero la segunda ya no. O no me presenta la barra de aceptar las macros o me la presenta pero da igual, aceptas y no se ejecuta.

He probado en varios ordenadores y pasa siempre lo mismo.

¿A alguien le ha pasado algo parecido a esto?

Respuesta
1

Si eso te ocurre en varios ordenadores y con un solo archivo, quizá se trate del archivo. Sería bueno verlo y/o que des algún detalle más sobre él. Quizá pase por algo tan simple como que tu "Private Sub Workbook_Open()" no esté en el módulo del libro sino en algún otro.

Comentas

Abraham Valencia

Hola de nuevo, después de mil pruebas y al pensar en lo de la "segunda vez" que lo abres, he encontrado el problema. 

Este no está en la apertura si no en el cierre anterior. Tengo desactivado el evento BeforeClose, obligando al usuario a utilizar botones de comando para cerrar. Como no quiero fastidiarle en caso que esté trabajando con otro excel y cerrárselo, se me ocurrió este código. Con lo que no contaba yo, es que una vez se cierra el libro ya no se ejecutan las dos siguientes líneas y no se vuelven a activar los eventos.

If Workbooks.Count > 1 Then
       Application.DisplayAlerts = False
      Application.EnableEvents = False
      ActiveWorkbook.Close SaveChanges:=False
      Application.DisplayAlerts = True
      Application.EnableEvents = True
Else
      Application.DisplayAlerts = False
      Application.EnableEvents = False
      Application.Quit
End If

No encuentro nada para que se ejecuten esas dos líneas tras el cierre. ¿alguna sugerencia a parte de avisar al usuario mediante un cuadro de mensaje?.

Claro, una vez cerrado un archivo sus macros ya no se ejecutan y por estas dos líneas no se activan:

Application.DisplayAlerts = True
      Application.EnableEvents = True

Y tus eventos siguen desactivados por la línea:

Application.EnableEvents = False

Y queda así para todo archivo así lo abras de forma posterior impidiendo que se active el evento "open", o cualquier otro en realidad. Lo que no me queda claro es ¿por qué desactivas los eventos antes de cerrar? ¿Por aquello que mencionas que tienes "algo" en el evento "BeforeClose"? Quizá ¿eso? Que tienes ahí no sea tan óptimo si con ello te "condenas" a desactivar los eventos permanentemente.

Ah, solo por si acaso, así en el evento "Open" intentes activarlos, como están desactivados nunca se activará para a su vez activarlos con código.

Abraham Valencia

¡Gracias! 

Si, en el BeforeClose tengo un Cancel, que obliga al usuario a utilizar los botones de cierre que cada uno lleva su propia macro, dado que deben "firmar el documento con su USERNAME", darle conformidad o no lo supervisores y firmarlo también",  bloquear todas las celdas de la hoja y notificar por mail si ha sido aceptado o corregido y con que cambios, y etc etc etc.

Creo que no va a quedar más remedio que sustituir el ActiveWorkbook.Close por el Application.Quit en todos los casos avisando al usuario de lo que va a pasar cuando abra el libro, presentándole un mensaje si Workbooks.Count > 1.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas