Последовательная обработка нескольких DGN-файлов одним макросом

В 99% случаев макрос, написанный нами на VBA для Microstation, используется непосредственно в том файле, в котором необходимо выполнить какие-то операции над элементами. Однако, периодически возникает необходимость использовать макрос для автоматической последовательной обработки сразу нескольких файлов за один раз.
Делается это очень просто:
Private Sub StartButton_Click()
' FilesList - это обычный ListBox
Dim FileName As String
Dim i As Long
' Переменные для статистики
Dim AllFilesCount As Long
Dim ErrorFilesCount As Long
Dim SuccessFilesCount As Long
ErrorFilesCount = 0
SuccessFilesCount = 0
AllFilesCount = FilesList.ListCount
' Проходим по всем файлам из списка
For i = 0 To FilesList.ListCount - 1
FileName = FilesList.list(i)
Debug.Print "Start process with: " & FileName
' Открываем очередной файл
Dim oDgnFile As DesignFile
Set oDgnFile = OpenDesignFile(FileName)
' Если файл не открылся - можем зафиксировать в дебаге
If oDgnFile Is Nothing Then
Debug.Print "Unable to open file '" & FileName & "'"
ErrorFilesCount = ErrorFilesCount + 1
' Файл успешно открыт и теперь мы можем работать в его контексте
Else
Debug.Print "Opened file '" & FileName & "'"
SuccessFilesCount = SuccessFilesCount + 1
' Например, можем собрать все шейпы из открытого файла
Dim ShapesCount As Long
Dim myScan As New ElementScanCriteria
Dim myEnum As ElementEnumerator
ShapesCount = 0
myScan.ExcludeAllTypes
myScan.IncludeType msdElementTypeShape
Set myEnum = ActiveModelReference.Scan(myScan)
While myEnum.MoveNext
...
Wend
End If
Next i
MsgBox "Всего файлов: " & AllFilesCount & Chr(13) & _
"Ошибочных файлов: " & ErrorFilesCount & Chr(13) & _
"Корректных файлов: " & SuccessFilesCount, vbInformation
End SubВ общем ничего сверхъестественного нет: всё что нам нужно – это грамотно отработать результат выполнения функции OpenDesignFile, если она сработала корректно, то мы сразу же оказываемся в контексте только что открытого файла и можем спокойно оперировать его элементами.
