Вы можете создать модуль класса в качестве прокси для библиотеки объектов - обернуть все методы, свойства и константы, необходимые для других ваших процедур.
Все эти процедуры будут использовать прокси-класс одинаково, поэтому вам не нужно будет пересматривать эти процедуры для переключения между ранним и поздним связыванием. И Intellisense покажет вам все, что вы раскрываете с помощью прокси-класса.
Класс будет единой точкой управления для переключения между ранним и поздним связыванием. Вы упомянули Excel в качестве одного примера:
#Const DevStatus = "PROD"
#If DevStatus = "DEV" Then
Private objApp As Excel.Application
Private objBook As Excel.Workbook
Private objSheet As Excel.Worksheet
#Else 'assume PROD
Private objApp As Object
Private objBook As Object
Private objSheet As Object
#End If
Если существует вероятность того, что Excel не может быть установлен на компьютерах каких-либо пользователей, вы можете проверить его доступность во время инициализации класса.
Dim blnExcelAvailable As Boolean
Private Sub Class_Initialize()
blnExcelAvailable = IsExcelAvailable()
End Sub
Private Function IsExcelAvailable() As Boolean
Dim blnReturn As Boolean
Dim objTest As Object
On Error GoTo ErrorHandler
Set objTest = CreateObject("Excel.Application")
blnReturn = True
ExitHere:
On Error GoTo 0
Set objTest = Nothing
IsExcelAvailable = blnReturn
Exit Function
ErrorHandler:
blnReturn = False
GoTo ExitHere
End Function
Тогда ваши процедуры, использующие прокси-класс, могут проверить свойство, чтобы увидеть, доступен ли Excel.
Public Property Get ExcelAvailable() As Boolean
ExcelAvailable = blnExcelAvailable
End Property
Я думаю, что такой подход возможен, и он удовлетворяет вашим требованиям AFAICT. Однако я не уверен, разумно ли это. Возвращаясь к примеру с Excel, вы можете сделать что-то подобное для управляемого подмножества его объектной модели. Но если вам нужны все или большинство его методов, свойств и констант, прокси-класс будет огромным предприятием.
Лично я бы не использовал этот подход. Мне не так сложно управлять ранним / поздним связыванием, как mwolfe02 и JP. описано. Однако у меня сложилось впечатление, что это более обременительно в вашей ситуации, поэтому, возможно, вы готовы вкладывать больше усилий, чем я, во что-то вроде этого.