Как подключить библиотеку в VBA?

В VBA есть много интересных библиотек позволяющих работать с объектом FSO, словарями, регулярными выражениями, объектами MS Office, а также много другое.

Можно и обойтись без их подключения и использовать конструкцию CreateObject(«»), но есть два маленьких нюанса

  1. Вы теряете чуть-чуть в производительности. Я, если честно, не до конца понимаю как так, но факт есть факт. С подключенной библиотекой, на коротких примерах ускорение в 2 раза — с 0,1 сек до 0,05 сек

  2. Вы теряете подсказки в среде VBE. Для кода, который вы отдали в использование — это нормально, но для себя любимых включение может быть лишним действием (опять же вы можете в какой-то момент забыть какую библиотеку включали)

Итак, проблематика ясна. Как бороться? В три этапа.

Первый этап — макросам должен быть предоставлен доступ к объектной модели VBA. Само собой вы при этом берете на себя риски — ведь при этом макросы могут удалить все и вся.

Файл ->
Параметры ->
Центр Управления Безопасностью ->
Параметры центра управления безопасностью ->
Параметры макросов ->
Включить галочку «Предоставлять доступ к объектной модели проектов VBA»

options

 

Второй этап — посмотреть GUID код соответствующей библиотеки, которую будете проверять/включать программным способом. Для этого в VBE перейдите в меню и включите галочку напротив библиотеки.

Tools -> References

Ref.png

Ну и третий этап — сам макрос. Верхняя часть выводит в окно Immediate Window все библиотеки, проверяет включена ли библиотека. Ну а строчка .AddFromGuid производит подключение

[code language=»vb»]
Sub ref_check()

Dim i As Integer

With ThisWorkbook.VBProject.References
For i = 1 To .Count
Debug.Print .item(i).GUID, .item(i).Description, .item(i).Major, .item(i).Minor
If .item(i).GUID = "{420B2830-E718-11CF-893D-00A0C9054228}" Then
Exit Sub
End If
Next i
‘Microsoft scripting
.AddFromGuid "{420B2830-E718-11CF-893D-00A0C9054228}", 1, 0
End With

End Sub
[/code]

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.