Использование ActiveX-объекта "WSP.WSPCalculator" в Microsoft Excel

В файле "WSP EXCEL.XLS" приводится пример использования пакета "WaterSteamPro" в программе Microsoft Excel. Версия Microsoft Excel должна быть не ниже 8.0 (Microsoft Excel 97).

Для доступа к функциям пакета "WaterSteamPro" в рассматриваемом примере используется ActiveX-объект "WSP.WSPCalculator". Для этого в редакторе Visual Basic for Applications (VBA) создается новый модуль, в котором будет находиться непосредственно код создаваемых функций-заглушек. Для перехода к редактору Visual Basic необходимо либо нажать сочетание клавиш Alt-F11, либо выбрать пункт "Редактор Visual Basic" в меню "Сервис/Макрос".

Далее есть два пути доступа к объекту "WSP.WSPCalculator". Первый – создавать экземпляр объекта через функцию "CreateObject(class,[servername])", которая создает ActiveX-объект с именем "class" и сервером с именем "servername". В этом случае код функции для вычисления, например, давления насыщения по температуре, будет таким:

Function PST(t as double) as double
Dim wsp as object
Set wsp = CreateObject("WSP.WSPCalculator")
PST = wsp.wspPST(t)
End function

Разберем этот пример. Мы определяем функцию с именем "PST" (тип "double"), которая по температуре "t" (тип "double") возвращает давление насыщения. Далее мы объявляем переменную с именем "wsp" и типом "object". В следующей строке переменной "wsp" присваиваем результат, возвращаемый функцией "CreateObject" с параметром "WSP.WSPCalculator". После этого в качестве результата функции "PST" используется значение, возвращаемое функцией "wspPST" созданного экземпляра объекта "WSP.WSPCalculator" с именем "wsp".

Недостаток данного метода в том, что при каждом обращении к функции будет производиться создание нового экземпляра объекта "WSP.WSPCalculator".

Второй способ организации доступа – это подключение всех ActiveX объектов из библиотеки OKAWSP6.DLL в документ Excel. Для этого в редакторе Visual Basic в меню "Tools" выбираем пункт "References". В появившемся списке (рис. 4) отмечаем элемент "WaterSteamPro" и нажимаем кнопку OK.

Рис. 4. Вставка ссылки на библиотеку

При этом нам становятся доступными все ActiveX объекты из подключенной библиотеки. И теперь для доступа к функциям "WaterSteamPro" можно использовать следующий код (определим второй вариант функции, высчитывающей давление насыщения по температуре):

Public wsp2 As New Wsp.WSPCalculator
Function PST2(t as double) as double
PST2 = wsp2.wspPST(t)
End function

Разберем пример. Мы в модуле (не в функции) объявляем переменную "wsp2" с типом "Wsp.WSPCalculator". А в функциях-заглушках производим обращения к методам этой переменной.

Преимущество второго метода в том, что при написании функций можно использовать технологию Microsoft IntelliSence, которая позволяет выводить список всех доступных функций. Для этого также можно использовать Object Browser (клавиша F2). Второе преимущество – в скорости работы функций – ActiveX-объект будет создан лишь один раз, а не при каждом обращении к функции.

Аналогичным образом можно использовать пакет "WaterSteamPro" в любых программах, "понимающих" Visual Basic. В принципе, в программе "WaterSteamPro Calculator" (версия для Microsoft Visual Basic) можно было бы организовать доступ к функциям аналогичным образом, но прямое обращения к DLL производится более быстро, чем через объекты ActiveX.