Automatisches Ausfuehren einer Subroutine beim Laden


Die Namensvergabe für eine Subroutine spielt normalerweise keine Rolle, eine Ausnahme stellt der Name OnProjectLoad da, denn wenn eine Subroutine diesen Namen erhält, wird sie automatisch ausgeführt, sobald sie geladen wird.

Diesen Umstand kann man sich nun leicht zunutze machen, um beim Start von MicroStation ein VBA Projekt nicht nur automatisch zu laden, sondern es auch gleich ausführen zu lassen.

Hier dazu ein kleines Beispiel:

Sub OnProjectLoad()
    MsgBox "hallo, ich wurde soeben geladen"
    ActiveWorkspace.AddConfigurationVariable "neue_variable", "testwert", True
End Sub

Diese Subroutine öffnet bei der Ausführung eine Dialogbox, dies nur zum Erkennen, dass dei Subroutine ausgeführt wird.

Dann wird eine Konfigurationsvariable gesetzt und in die UCF Datei geschrieben.

Damit diese Subroutine automatisch beim Start ausgeführt wird, muss dieses Projekt automatisch geladen werden, d.h. es muss bei der Variablen MS_VBAAUTOLOADPROJECTS gelistet sein, dazu kann man die Variable editieren oder einfach einen Haken im Projekteditor machen, wie hier im Kreis kenntlich gemacht:

Beim nächsten Neustart von MicroStation wird diese Routine dann automatisch geladen und durch den Namen OnProjectLoad auch ausgeführt, wie hier zu sehen ist:

Dieser Screenshot zeigt nicht nur, dass die Routine ausgeführt wurde, sondern zeigt auch, dass diese Subroutine bereits während des Startvorgangs von MicroStation ausgeführt wird, im Hintergrund ist noch der Splashscreen von MicroStation zu sehen, also ist die Subroutine bereits ausgeführt worden, bevor der MicroStation Manager zur Auswahl einer Zeichnung erscheint.

Deshalb ein wichtiger Hinweis an dieser Stelle, in dieser einfachen Form können zwar Befehle ausgeführt werden, wie hier im Beispiel das Setzen von Variablen etc., aber man sollte nicht versuchen Befehle ausführen zu lassen, die sich auf Inhalte einer Zeichnung beziehen, dies führt zu einem Fehler. Will man dies aber machen, sollte man einen Eventhandler installieren, der das Öffnen einer Zeichnung abfängt - dazu mehr in einem folgenden Beitrag.