Поздняя привязка VBIDE.VBE в excel

можно ли поздно привязать VBIDE.Объект VBE в Excel? Например:

Dim VBAEditor As VBIDE.VBE

вместо этого становится чем-то похожим на это (поздно привязанное):

Dim VBAEditor As Object: set VBAEditor = CreateObject ("VBIDE.VBE")

моя цель состоит в том, чтобы избежать необходимости вручную перейти в флажок "Microsoft Visual Basic for Applications Extensibility 5.3" ссылка.

решение

используя обратную связь ниже, я смог программно добавить " Microsoft Visual Basic для приложений Расширяемость 5.3" динамические ссылки. Решение заключается в следующем:

Sub mainFunction()

    Call AddLib("VBIDE", "{0002E157-0000-0000-C000-000000000046}", 5, 3)

    ' Bunch of working code goes here

End Sub

'******************************************************************************
'AddLib: Adds a library reference to this script programmatically, so that
'        libraries do not need to be added manually.
'******************************************************************************
Private Function AddLib(libName As String, guid As String, major As Long, minor As Long)

    Dim exObj As Object: Set exObj = GetObject(, "Excel.Application")
    Dim vbProj As Object: Set vbProj = exObj.ActiveWorkbook.VBProject
    Dim chkRef As Object

    ' Check if the library has already been added
    For Each chkRef In vbProj.References
        If chkRef.Name = libName Then
            GoTo CleanUp
        End If
    Next

    vbProj.References.AddFromGuid guid, major, minor

CleanUp:
    Set vbProj = Nothing
End Function

Я был сильно вдохновлен эта статья стека о динамических ссылках в excel.

1 ответов


да,формы Excel: определить неиспользуемый код вы можете использовать позднее связывание

Dim VBProj
Dim VBComp
Set VBProj = ActiveWorkbook.VBProject
For Each VBComp In VBProj.vbcomponents

etc