2013-08-12 3 views
0

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

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

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

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

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

Sub MRetrieve() 
    X = HypMenuVRefresh() 
End Sub 

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

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

Любая помощь была бы высоко оценена!

ответ

1

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

+0

Спасибо за ответ. Я пробовал 'HypRetrieveRange' и' HypRefresh', используя инструкцию declare следующим образом: 'Объявлять функцию HypMenuVRefresh Lib" HsAddin.длл "() As Long Sub MRetrieve() X = HypMenuVRefresh() End Sub' Но это не сработало, я получил ту же ошибку, говоря: Compile Error: Константы, фиксированная длина строки, массив, пользовательские типы и заявления Declare не разрешены как публичные члены объектных модулей. Вы столкнулись с этой ошибкой или знаете, как ее исправить? Я думаю, что это утверждение обновления является лучшим способом. – user2674605

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 
0

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

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

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

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

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

* Примечание: Возврат значение 0 является 'OK'

0

Это работает для меня. Вы можете назначить этот макрос любой кнопке. Вместо использования функции refresh all, я использую функцию 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 
1

Неверная декларация для x64 в VBA.

Try:

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 
0

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

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