Ausfuehren eine VBA Routine per Keyin


 

Oftmals besteht die Notwendigkeit, eine VBA Subroutine mit einem Tastaturbefehl ausführen zu können, sei es um diesen Keyin im Rahmen einer Stapelverarbeitung zu benutzen oder um diesen Aufruf in ein Menü zu integrieren, damit die Ausführung per Knopfdruck ausgeführt werden kann.

Um auch Anwendern ohne bisherige VBA Kenntnisse die Möglichkeit zu geben, dies selber zu probieren, soll dies an einem kleinen VBA Beispiel gezeigt werden, das dabei gleich erstellt wird. 

Um eine VBA Routine zu erstellen, gehe ich in MicroStation in das Pulldownmenü Extras und dort unter Makro auf Projekt-Manager: 

Im Projektmanager ist meistens schon eine default.mvba Datei geladen, die im folgenden Fenster gelistet ist. Allerdings wir erstellen ein neues Projekt, indem wir im folgenden Fenster den linken Button anklicken:

Es öffnet sich ein Dateimanager zum Erstellen einer .MVBA Datei, dazu können wir auch den Pfad bestimmen. Hier ist zu empfehlen, den vorgegebenen Pfad zu akzeptieren, denn es handelt sich hier um einen Pfad zu einem VBA Verzeichnis, das sich in dem MicroStation Workspace befindet. Auf jeden Fall ist zu empfehlen, einen Pfad zu benutzen, auf die die MicroStation Variable MS_VBASEARCHDIRECTORIES zeigt, weil dann bei dem späteren Keyin kein Pfad angegeben werden muss: 

Nachdem ein neues Projekt angelegt ist, ich habe hier als Projektnamen "Test" gewählt, können wir das Projekt im VBA Editor öffnen. Klicken Sie dazu im Projektmanager die Zeile mit dem vorher erstellten Projekt an und klicken auf den 5. Button "Visual Basic Editor":  

Unter dem Projekt "Test" wird automatisch ein Modul mit dem Namen "Module1" angelegt. Doppelklick auf "Module1" öffnet im rechten Bereich den Eingabebereich für den eigentlichen Programmcode. Wir beschränken uns hier auf ein einfaches Beispiel, das lediglich eine Dialogbox öffnet. Als Namen für die Subroutine habe ich "meintest" gewählt, diesen Namen benötigen wir beim Keyin, abenso den Projektnamen und optional auch den Modulnamen, die Komponenten sind hier eingekreist: 

Der Programmcode umfasst lediglich diese 3 Zeilen:

Sub meintest()

MsgBox "hallo, ich tu was"

End Sub

Eine VBA Subroutine kann über folgenden allgemeinen Keyin geladen und auch gleich gestartet werden:

VBA RUN [Projektname]Modulname.Subroutine

D.h. in unserem konkreten Beispiel geht folgender Keyin:

vba run [test]module1.meintest

Wenn es allerdings wie in unserem Beispiel keine weiteren Module gibt, und es somit auch keine Verwechslung mit gleichnamigen Subroutinen in anderen Modulen bestehen kann, kann der Modulname auch weggelassen werden:

vba run [test]meintest

Wenn nun das VBA Projekt bereits geladen ist, kann auch der Projektname weggelassen werden, wenn nicht mehrere Subroutinen mit demselben Namen in mehreren Projekten definiert sind, dies wäre dann der kürzeste Keyin:

vba run [test]meintest

Hier öffnet sich die Dialogbox, wenn einer der angegebenen Keyins ausgeführt wird:

 Bei Fragen oder Problemen wenden Sie sich bitte an den technischen Support