Как уже говорили другие люди, если вы не собираетесь добавлять ссылку на DLL до Workbook_Open
, вы должны использовать позднюю привязку для подключения к содержимому в DLL.
Тем не менее, я думаю, что вы делаете это неправильно. Вместо добавления ссылки на DLL в Workbook_Open
сделайте ссылку на нее и установите вместо нее .IsBroken
. Тогда у вас может быть код, который сделает все, что нужно для исправления неработающей ссылки.
Это сохраняет преимущество раннего связывания, и вы не получите такого же рода ошибок компиляции, если ссылка на DLL не работает.
ПРИМЕЧАНИЕ : Вы все еще можете получить ошибки компиляции, но они не будут относиться к отсутствующей DLL. Несмотря на то, что у вас неверная ссылка, любое использование функций из модуля VBA Strings
вызовет ошибку компиляции, если функция не имеет префикса Strings.
Например, следующий код вызовет ошибку компилятора до запуска Workbook_Open
если у вас есть неработающие ссылки.
Private Sub Workbook_Open()
Dim r As Reference
For Each r In ThisWorkbook.VBProject.References
If r.IsBroken Then
MsgBox "Found broken reference." & vbCrLf _
& Mid(r.FullPath, InStrRev(r.FullPath, "\") + 1)
End If
Next r
End Sub
Чтобы исправить, префикс Mid
и InStrRev
с Strings.
.
MsgBox "Found broken reference." & vbCrLf _
& Strings.Mid(r.FullPath, Strings.InStrRev(r.FullPath, "\") + 1)