Создание макроса обновления 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