В Excel воспользоваться функциями из надстройки «Пакет анализа», причём, без подключения этой надстройки- Visual Basic(Бейсик)

Если у Вас возникла необходимость в программном использовании функций, которые, как правило, доступны, только после подключения надстройки "Пакет анализа", но, при этом, Вы не хотите подключать эту надстройку или открывать файл ATPVBAEN.XLA, то начиная с Excel 2000 для решения этой задачи можно использовать OWC - Office Web Components

Несколько примеров использования:

Получение случайного числа от -100 до 100 =СЛУЧМЕЖДУ(-100; 100)
code: #vba
iResult = CreateObject("OCATP.OCATP.1").RANDBETWEEN(-100, 100)
Получение даты, отстоящей от текущей даты, на один месяц =ДАТАМЕС(СЕГОДНЯ(); 1)
И получение последнего дня текущего месяца =КОНМЕСЯЦА(СЕГОДНЯ(); 0)

With CreateObject("OCATP.OCATP.1")
     iResult1 = .RANDBETWEEN(-100, 100)
     iResult2 = CDate(.EDATE(Date, 1))
     iResult3 = CDate(.EOMONTH(Date, 0))
End With
Если же Вам необходимы подсказки к функциям (количество аргументов, их тип и обязательность), то используйте раннее связывание. Для этого, в редакторе VBA в меню Tools выберите команду References и подключите Microsoft Office Web Components Function Library (MSOWCF.DLL)

Dim iOWCATP As New MSOWCFLib.OCATP
Dim iDate As Date, iResult As Date
iDate = Now 'Date
iResult = iOWCATP.EOMONTH(iDate, 0)
MsgBox "Последний день этого месяца : " & iResult
code: #vba
Dim iDate As Date, iResult1#, iResult2#, iResult3#
 
With New MSOWCFLib.OCATP
     iDate = #1/31/2007# '39113
     iResult1 = .EDATE(CDbl(iDate), 1)
     iResult2 = .CONVERT(451, "F", "C")
     iResult3 = .WEEKNUM(CDbl(Date), 2)
     MsgBox "Дата, отстоящая на один месяц от " & iDate & " это " & CDate(iResult1)
     MsgBox "451 по Фаренгейту, а в цельсиях, это " & iResult2
     MsgBox "Сейчас идёт неделя# " & iResult3
End With
Если найти OWC не удаётся, а применение первых советов, приводит к возникновению ошибки, то, по всей видимости, на Вашем компьютере просто нет указанного компонента.

Leave a Comment