
Visual Basic 5.0 introduce la palabra clave WithEvents que nos permite responder e eventos generados por un servidor ActiveX. Este artículo muestra cómo podemos usar WithEvents para atrapar el evento Quit del objeto Microsoft Word Application.
Para recivir los eventos de un servidor ActiveX debemos declarar una variable que reflejará el objeto:
Dim WithEvents objWord As Word.Application
Una vez que declaramos el objeto Word.Application de esta manera, podemos responder a los eventos que genere. Por ejemplo, para responder al evento Quit del objeto objWord podemos crear un procedimiento llamado objWord_Quit.
Ejemplo paso a paso
NOTA: Microsoft Word 97 es la única aplicación de Microsoft Office que expone un evento Quit.
1.Empezamos un nuevo proyecto "Exe estándar".
2.Seleccionamos la referencia a "Microsoft Word 8.0 Object Library".
3.Añadimos un módulo de clase al proyecto.
4.Añadimos el siguiente código a Class1:
Dim WithEvents objWord As Word.Application
Private Sub Class_Initialize()
Form1.Label1.Caption = "Starting Word..."
'Instanciamos una nueva instancia de Word y añadimos
'un nuevo documento
Set objWord = New Word.Application
objWord.Documents.Add
objWord.Visible = True
Form1.Label1.Caption = "Word se está ejecutando..."
End Sub
Private Sub objWord_Quit()
'Respondemos al evento Quit de Word
Form1.Label1.Caption = "¡Hemos salido de Word!"
End Sub
5.Añadimos un Label y un CommandButton a Form1.
6.Añadimos el siguiente código en Form1:
Dim objAppWithEvents As Class1
Private Sub Command1_Click()
'Instanciamos Class1
Set objAppWithEvents = New Class1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set objAppWithEvents = Nothing
End Sub
7.Ejecutamos la aplicación. Pulsamos en Command1. Se carga la nueva instancia de Word. Una vez que la aplicación se cargó y está visible en Label1 aparece "Word se está ejecutando...". Salimos de Word. En Label1 aparecerá "¡Hemos salido de Word!".

