Россия, г. Москва +7 (926) 233-46-64 alex@harlamenkov.ru

Проверка наличия пользовательской библиотеки

Мы используем много документов с макросами. Для унификации кода и сокращения его в каждом отдельном документе, мы вынесли постоянно используемые функции в отдельную библиотеку, которая устанавливается в виде расширения.


Соответственно, при любом обращении к функциям этой библиотеки из макроса документа, необходимо обеспечить:

  • физическое наличие библиотеки
  • при её наличии — подгрузить библиотеку — запустить функцию
  • при её отсутствии — выдать предупреждение — недопустить вызова функции.

'==========================================
' кнопка, вызывающая процедуру из пользовательской библиотеки
Sub Suicid_doc
    libInfra = «Infra»                   'имя библиотеки функций
    If CheckAndLoadLib(libInfra) then    'проверяем загружена ли библиотека
        'print «библиотека есть»
        Infra.TemplateLauncher.Suicide_question    'вызов функции из библиотеки
      else
        MsgBox(«Требуется установка библиотеки спецфункций «» + libInfra + "»",0+16,«Внимание! Операция прервана.»)
    End If
End Sub

Function CheckAndLoadLib(libName as String) as Boolean
    If GlobalScope.BasicLibraries.hasByName (libName) Then                  'проверяем загружена ли библиотека
        If Not GlobalScope.BasicLibraries.IsLibraryLoaded (libName) Then    'проверяем загружена ли библиотека
            GlobalScope.BasicLibraries.LoadLibrary (libName)                'подгружаем библиотеку дополнительных функций        
        End If
        CheckAndLoadLib = True
      else
        CheckAndLoadLib = False
    End If
End Function

Алексей Евгеньевич Харламенков