Rozhraní COM ve VBA 1: Otevření programu RFEM, vytvoření a uložení modelu, zavření programu RFEM

Tipy & triky

V prvním příspěvku k rozhraní COM se budeme zabývat otevřením a zavřením programu RFEM. Jako programovací jazyk použijeme VBA v Excelu, průběh je ale stejný jako při programování pomocí C#. Aby VBA rozpoznal příkazy k tomuto rozhraní, je nejdříve potřeba přidat příslušný odkaz. Na obrázku vlevo je zobrazen tento krok pro RFEM 5.

Následuje zdrojový kód pro jednoduchý program. Nejdříve vytvoříme rozhraní k modelu a poté z modelu program otevřeme. Po uložení se program opět zavře.

Vždy lze použít chybovou rutinu pro zachytávání a zobrazování případných vstupních nebo výstupních chyb. Navíc se také v případě problému znovu licence odblokuje a RFEM/RSTAB je opět přístupný. Další vysvětlení najdeme ve zdrojovém kódu.

Sub CreateModel()

' Nejdříve se vytvoří
' rozhraní k novému modelu.
Dim iModel As RFEM5.model
Set iModel = New RFEM5.model

' Nyní se stanoví název modelu,
' buď obsah buňky B2 z listu Tabulky1
' nebo, pokud je prázdná, "test.rf5".
Dim modelName As String
If IsEmpty(Worksheets("Tabulka1").Range("B2").Value) Then
   modelName = "test01.rf5"
Else
   modelName = CStr(Worksheets("Tabulka1").Range("B2").Value)
End If

' Předání názvu modelu na rozhraní.
iModel.SetName(modelName)

' Zde lze uvést popis modelu.
iModel.SetDescription("popis")

' Chybová rutina.
On Error GoTo e

Dim iApp As RFEM5.Application
' Rozhraní k programu se otevře.
' (Program se spustí.)
Set iApp = iModel.GetApplication

' Licence COM a přístup k programu se zablokuje.
iApp.LockLicense

' Program se zobrazí v popředí.
iApp.Show

' Model se uloží pod "C:\temp".
iModel.Save("C:\temp\" & modelName)

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

' COM licence se odblokuje, přístup k programu je opět možný.
iModel.GetApplication.UnlockLicense
' Program se zavře.
iApp.Close

End Sub

Odkazy

Kontakt

Kontakt

Máte dotazy nebo potřebujete poradit?
Kontaktujte nás nebo využijte stránky s často kladenými dotazy.

+420 227 203 203

info@dlubal.cz