3510x
001293
2016-08-02

Интерфейс COM в VBA | 1. Запуск программы RFEM, создание и сохранение модели, закрытие программы RFEM

В первой части поста, посвященного интерфейсу COM, будет описано открытие и закрытие программы 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.

Затем, исходный код для простой программы. Сначала можно создать интерфейс для данной модели, а затем открыть программу с помощью модели. После сохранения программа будет закрыта.

Всегда полезно использовать обработчик ошибок для обнаружения и отображения возможных проблем ввода-вывода. При возникновении проблемы, лицензия будет разблокирована снова, и вы сможете получить доступ к RFEM / RSTAB. Дальнейшие разъяснения можно найти в исходном коде.

Sub CreateModel()

' Firstly, an interface
' to a new model is created.
Dim iModel As RFEM5.model
Set iModel = Новые RFEM5.model

' Here, the model name is defined,
' either the content of cell B2 of sheet Table1
' or, if empty, "test.rf5".
Dim modelName As String

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

' Transfer of the model name to the interface.
iModel.SetName(modelName)

' It is possible to specify a model description here.
iModel.SetDescription( "description")

' Error handling routine.
On Error GoTo e

Dim iApp As RFEM5.Application
' Interface to the program is opened.
' (Program is started.)
Set iApp = iModel.GetApplication

' COM license and program access are blocked.
iApp.LockLicense

' Program is displayed in the foreground.
iApp.Show

' Model is saved at "C:\temp" .
iModel.Save("C:\temp\" & modelName)

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

' COM license is unblocked, program access possible again.
iModel.GetApplication.UnlockLicense
' Program is closed.
iApp.Close

End Sub


Автор

Г-н Гюнтель осуществляет техническую поддержку пользователей Dlubal Software.

Ссылки