3429x
001293
2. August 2016

COM-Schnittstelle in VBA | 1. RFEM öffnen, Modell erstellen und speichern, RFEM schließen

Im ersten Teil der Beiträge zur COM-Schnittstelle geht es um das Öffnen und Schließen von RFEM. Als Programmiersprache wird VBA in Excel verwendet, der Programmablauf ist aber identisch zur Programmierung mit C#. Damit VBA die Befehle zur Schnittstelle kennt, muss zunächst der entsprechende Verweis hinzugefügt werden. In der Abbildung ist links das Beispiel anhand von RFEM 5 zu sehen.

Nachfolgend der Quellcode für ein einfaches Programm. Zunächst wird die Schnittstelle zum Modell angelegt und danach über das Modell das Programm geöffnet. Nach dem Speichern wird das Programm wieder geschlossen.

Es bietet sich immer die Verwendung einer Fehlerbehandlungsroutine an, damit etwaige Eingabe-/Ausgabeprobleme abgefangen und dargestellt werden. Zudem wird auch beim Auftreten eines Problems die Lizenz wieder entsperrt und RFEM/RSTAB ist wieder zugänglich. Weitere Erklärungen finden sich im Quellcode.

Sub CreateModel()

' Zuerst wird die Schnittstelle
' zu einem neuen Modell angelegt.
Dim iModel As RFEM5.model
Set iModel = New RFEM5.model

' Hier wird der Modellname festgelegt,
' Entweder der Inhalt der Zelle B2 von Blatt Tabelle1
' oder, falls leer, "test.rf5".
Dim modelName As String

If IsEmpty(Worksheets("Tabelle1").Range("B2").Value) Then
modelName = "test01.rf5"
Else
modelName = CStr(Worksheets("Tabelle1").Range("B2").Value)
End If

' Übergabe des Modellnamens an die Schnittstelle.
iModel.SetName(modelName)

' Hier kann die Modellbeschreibung angegeben werden.
iModel.SetDescription("description")

' Fehlerbehandlungsroutine.
On Error GoTo e

Dim iApp As RFEM5.Application
' Schnittstelle zum Programm wird geöffnet.
' (Programm wird gestartet.)
Set iApp = iModel.GetApplication

' COM-Lizenz und Programmzugriff werden gesperrt.
iApp.LockLicense

' Programm wird im Vordergrund dargestellt.
iApp.Show

' Modell wird unter "C:\temp" gespeichert.
iModel.Save("C:\temp\" & modelName)

e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source

' COM-Lizenz wird freigegeben, Programmzugriff wieder möglich.
iModel.GetApplication.UnlockLicense
' Programm wird geschlossen.
iApp.Close

End Sub


Autor

Herr Günthel kümmert sich im Kundensupport um die Anliegen unserer Anwender.

Links