We are often faced with the task of having to carry out actions during the opening or closing of drawings. These actions can include making adjustments or launching control routines that check and correct drawings.Here is a small example created largely from the MicroStation VBA Help that is modified and compiled.In the previous article explaining automatically loading VBA routines, it has already been noted that it is possible to automatically execute something, but this happens before the drawing file is opened.Therefore, this example can bee seen more as an extension. Because there is an event handler installed in this example, after running the VBA routine, every time you open or close a drawing, an event is intercepted. This makes it easy to implement something to run later when these events occur.These events are indicated by a message box in this example, but this can be changed accordingly for your own use.A module with the subroutine OnProjectLoad might look something like this:
Dim oOpenClose As clsOpenClose
Under OnProjectLoad ()
Set oOpenClose = New clsOpenClose
MsgBox "Eventhandler geladen"
To load this VBA routine when you start MicroStation, it must be listed under the MS_VBAAUTOLOADPROJECTS, and the clsOpenClose module must also be loaded. Here is a class module clsOpenClose that must be created separately in the defined class modules:Dim WithEvents hooks As Application
Private Sub Class_Initialize()
Set hooks = Application
Private Sub hooks_OnDesignFileClosed ( ByVal DesignFileName As String )
MsgBox ActiveDesignFile.FullName + "closed"
Private Sub hooks_OnDesignFileOpened ( ByVal Design Filename As String )
MsgBox ActiveDesignFile.FullName + "opened"
In this example, two events OnDesignFileOpened and OnDesignFileClosed are intercepted when opening and closing a drawing. They both open a message box indicating whether the file has been opened or closed.For simplicity, this example is stored as a complete VBA project and can be downloaded here:VBA routine to install and event handler