это примерный подраздел для программной установки библиотеки типов для API. Почему процедура обработки ошибок не работает? Я попытался следовать стратегии try...except...finally
, с которой я знаком с Python.Excel VBA On Обработка ошибок с пользовательским типом
Sub CopyViewLayout():
'TRY:
On Error GoTo addReference
Dim App As femap.model
'COMPILE ERROR: USER TYPE NOT DEFINED
ResumeSub:
Dim App As femap.model
Set App = GetObject(, "femap.model")
Dim rc As Variant
Dim feView As femap.View
Set feView = App.feView
rc = feView.Get(0)
Exit Sub
'EXCEPT:
addReference:
Dim vbaEditor As VBIDE.VBE
Dim vbProj As VBIDE.VBProject
Dim checkRef As VBIDE.Reference
Dim filepath As String
Set vbaEditor = Application.VBE
Set vbProj = ActiveWorkbook.VBProject
filepath = "C:\apps\FEMAPv11\"
On Error GoTo Failure
vbProj.References.AddFromFile (filepath & "femap.tlb")
Set vbProj = Nothing
Set vbaEditor = Nothing
GoTo ResumeSub
'FINALLY
Failure:
MsgBox ("couldn't find type library, exiting sub")
End Sub
EDIT
Я сломала этот раздел из основной, так как обработка ошибок, это просто смешно в VBA ... Лучший подход для меня было реализовать конечно-машинка используя булевы ,
ответ
Sub refcheck()
Dim i As Long
Dim FEMAP_GUID As String
FEMAP_GUID = "{08F336B3-E668-11D4-9441-001083FFF11C}"
With ActiveWorkbook.VBProject.references
For i = 1 To .Count
If .Item(i).GUID = FEMAP_GUID Then
Exit For
Else
'note: filepath is determined using Dir() elsewhere...
.AddFromFile (filepath & "femap.tlb")
Exit For
End If
Next
End With
End Sub
Обработка ошибок в VBA не работает, как 'try ... catch' - попытка имитировать это вызовет только боль и страдания. [Обработать ошибки времени выполнения так, как они должны быть] (http://stackoverflow.com/a/30489275/1188513) –
Обработка ошибок, вероятно, самая сложная задача для меня. Чтобы решить эту проблему, я нарисовал схему блок-схем/маршрутов моих зависимостей и подмножеств и создал набор логических логических модулей, которые действуют как «ключи» в «ворота», где ворота являются ключевыми зависимыми вызовами в главном. –
Редактирование ответа в вопросе поражает характер Q & A переполнения стека. Возможно, вам стоит вместо этого отправить ответ. –