Симуляция арены начинается и закрывается в VBA

В настоящее время я использую Arena Simulation для академического проекта. Я хочу запустить модель акадамной версии Arena через VBA, запустить модель и автоматически закрыть ее.

До сих пор модель Arena открывается, но не работает. Нажатие на кнопку запуска (чтобы запустить симуляцию модели) в Arena отсутствует. Как я могу "нажать" кнопку запуска в VBA?

Мой текущий раздел кода:

Private Function ExecuteArena(ByVal arenaFile As String, ByVal arenaPath As String)

On Error GoTo ErrorHandler

''' Clear the error mesaage variable.
gszErrMsg = vbNullString

''' Shell out
If Not bShellAndWait(arenaPath & " " & arenaFile & " ", 6) Then Err.Raise 9999

Exit Function

ErrorHandler:
''' If we ran into any errors this will explain what they are.
MsgBox gszErrMsg, vbCritical, "Shell and Wait Error"

End Function

   Private Function bShellAndWait(ByVal szCommandLine As String, Optional ByVal iWindowState As Integer = vbHide) As Boolean
Dim lTaskID As Long
Dim lProcess As Long
Dim lExitCode As Long 
Dim lResult As Long

On Error GoTo ErrorHandler

''' Run the Shell function.
lTaskID = Shell(szCommandLine, iWindowState)

''' Check for errors.
If lTaskID = 0 Then Err.Raise 9999, , "Shell function error."

''' Get the process handle from the task ID returned by Shell.
lProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0&, lTaskID)

''' Check for errors.
If lProcess = 0 Then Err.Raise 9999, , "Unable to open Shell process handle."

''' Loop while the shelled process is still running. 
Do
 ''' lExitCode will be set to STILL_ACTIVE as long as the shelled process is running.
 lResult = GetExitCodeProcess(lProcess, lExitCode)
 DoEvents
Loop While lExitCode = STILL_ACTIVE

bShellAndWait = True
Exit Function

ErrorHandler:
 gszErrMsg = Err.Description
 bShellAndWait = False
End Function

1 ответ

Я нашел ответ на свой вопрос. Сначала вы должны активировать Arena Libary в VBA. Дополнительно -> Ссылки -> выберите "Библиотека типов Arena 14.0". Затем вы можете открыть, запустить и завершить модель Arena с помощью этого кода.

'Declare variables
Dim oArenaApp As Arena.Application
Dim oModel As Arena.Model, oSIMAN As Arena.SIMAN
Dim oModule As Arena.Module

'Start Arena, open model, make Arena active & visible
Set oArenaApp = CreateObject("Arena.Application")
ModName = "YOUR FILEPATH"
Set oModel = oArenaApp.Models.Open(ModName)
Set oSIMAN = oModel.SIMAN
oArenaApp.Activate
oArenaApp.Visible = True

'Run model in batch mode and send results back to Excel
oModel.BatchMode = True ' Turn off animation
oModel.QuietMode = True ' Do not ask final question
oModel.Go (smGoWait) ' Suspend VB until run ends    

'End model run and exit Arena
oModel.End
oArenaApp.Visible = False
Другие вопросы по тегам