Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Hyperion SmartView Add-in + VBA, вытаскиваем текущий срез данных / 1 сообщений из 1, страница 1 из 1
11.07.2012, 15:18
    #37875064
Шведков Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hyperion SmartView Add-in + VBA, вытаскиваем текущий срез данных
Всем привет. Есть задача - вытащить на лист Excel текущий срез данных из Smart View панели (POV CommandBar).

В принципе, ничего сложного: подключаем модуль Hyperion API for VBA и тянем данные функцией HypGetPOVItems.
Но теперь встал вопрос как повесить макрос на нашу панель SmartView ? соответственно на кнопку "Обновить", чтобы после обновления среза в конкретном диапазоне поменялись текстовые значения выбранных элементов.

Пытался повесить на Worksheet_Change, но она не реагирует на программное изменение ячеек через SmartView.
Worksheet_Calculate - после добавления на лист ячейки с формулой, вызывается 4 раза на однократное нажатие кнопки "Обновить". + вызывает сама себя если повесить на нее наш макрос, в нем юзается функция из модуля HypRetrieve. Application.EnableEvents = False так же не помогает, видимо включается автоматически при использовании описанных в модуле функций. "Add watch" - не помогло, и вообще стоит ли лезть в подключаемую библиотеку HsAddin.dll чтобы как-то отловить этот момент ?

Итого:
Вопрос1: как дебажить действия CommandBar'a ? (POV панель)
Вопрос2: как отловить изменение параметра Application.EnableEvents ?

кидаю сам макрос, может кому пригодится:
GetPOVItems
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Sub getPOVitems()

Dim vtGrid As Variant
Dim vtDimNames As Variant
Dim vtPOVNames As Variant
Dim i As Integer

'обновляем данные
X = HypRetrieve("data")
If X <> 0 Then
MsgBox ("Retrieve failed.")
Exit Sub
End If

''выбираем ячейку в диапазоне с данными
'Range("B3").Select
'sts = HypGetSourceGrid("data", vtGrid)

'получаем массив измерений и выбранных элементов
Y = HypGetPOVItems(vtDimNames, vtPOVNames)
'кол-во измерений
X = HypGetPOVCount()

Range("G5").Value = X

' вытаскиваем названия измерений и выбранных элементов
For i = 0 To X - 1
Cells(6 + i, 7).Value = vtDimNames(i)
Cells(6 + i, 8).Value = vtPOVNames(i)
Next

End Sub


...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Hyperion SmartView Add-in + VBA, вытаскиваем текущий срез данных / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]