Создание макроса обновления VBA в Smart View для Oracle

Кто-нибудь знает код VBA, который мне нужно использовать, чтобы я мог автоматически "обновить" и "обновить все" с помощью EPM (Hyperion) Smartiew? Функция "Обновить" перетаскивает данные в Excel на активной вкладке, где функция "Обновить" обновляет все вкладки в рабочей книге.

Я хотел бы создать простой макрос, прикрепленный к командной кнопке в Excel, и я не уверен, какой код VBA использовать.

Я попытался записать макрос, где я просто запустил запись, щелкнул обновить и остановить запись, хотя это не сработало.

Я попробовал этот код только для обновления:

Declare Function HypMenuVRefresh Lib "HsAddin.dll"() As Long

Sub MRetrieve()
  X = HypMenuVRefresh()
End Sub

Но получил сообщение об ошибке, в котором говорилось, что мне пришлось обновить метод Declare для использования в 64-битной системе (я использую 64-битную систему).

Кто-нибудь знает, как я мог создать этот автоматический макрос для обновления данных?

Любая помощь приветствуется!

6 ответов

Объявление для x64 в VBA неверно.

Пытаться:

Private Declare PtrSafe Function HypMenuVRefresh Lib "HsAddin" () As Long

Sub refreshWS()

    Dim Count, i As Integer

    i = 1

    Count = Worksheets.Count

    Do While i <= Count

        Sheets(i).Select

        MsgBox Sheets(i).Name

        Call HypMenuVRefresh

        i = i + 1

    Loop

    MsgBox "done"

End Sub

HypRetrieveRange Можно обновить или обновить диапазон информации, также есть ряд других функций, которые могут соответствовать вашим потребностям, в зависимости от того, сколько информации вам нужно обновить. Вы импортировали весь smartview.bas файл как они рекомендовали?

Используйте вызовы функций, которые в основном имитируют нажатие кнопок!

Обновить текущий лист

Declare Function HypMenuVRefresh Lib "HsAddin.dll" () As Long  
lngReturn = HypMenuVRefresh()

Обновить все листы

Declare Function HypMenuVRefreshAll Lib "HsAddin.dll" () As Long  
lngReturn = HypMenuVRefreshAll()

*ПРИМЕЧАНИЕ: возвращаемое значение 0 "ОК"

Sub Refresh()
    '
    ' Refresh Macro
    ' Macro recorded 8/12/2011 by joao-oliveira
    '
    Dim oBar As CommandBar
    Set oBar = Application.CommandBars("Worksheet Menu Bar")
    oBar.Controls("Hyperion").Controls("Refresh").Execute
End Sub

Создайте кнопку и назначьте ей новую подпрограмму. Используйте команду call для вызова публичной функции.

Sub RefreshHFM()
'
' RefreshHFM Macro
'
    Call HypMenuVRefreshAll
'
End Sub

Это сработало для меня. Вы сможете назначить этот макрос любой кнопке. Вместо использования функции "обновить все" я использую функцию HypMenuVRefresh в каждой рабочей таблице.

Sub refreshWS()
Dim Count, i As Integer

 i = 1
 Count = Worksheets.Count

    Do While i < Count

     Sheets(i).Select
     Call HypMenuVRefresh
     i = i + 1

    Loop

    MsgBox "done"

End Sub
Другие вопросы по тегам