【问题标题】:Creating a VBA Refresh Macro in Smart View for Oracle在 Smart View for Oracle 中创建 VBA 刷新宏
【发布时间】:2013-08-13 16:06:18
【问题描述】:

有谁知道我需要使用的 VBA 代码,以便我可以使用 EPM (Hyperion) Smartiew 自动“刷新”和“全部刷新”? “刷新”功能将数据拉入活动选项卡上的 Excel 中,其中“刷新”所有功能刷新工作簿中的所有选项卡。

我想在 Excel 中创建一个附加到命令按钮的简单宏,但我不确定要使用哪个 VBA 代码。

我尝试录制一个宏,我只是开始录制单击刷新并停止录制,尽管这不起作用。

我尝试这段代码只是为了刷新:

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

Sub MRetrieve()
  X = HypMenuVRefresh()
End Sub

但收到一条错误消息,说我必须更新声明方法以用于 64 位系统(我使用的是 64 位系统)。

有谁知道我如何创建这个自动宏来刷新数据?

任何帮助将不胜感激!

【问题讨论】:

    标签: excel vba hyperion epm


    【解决方案1】:

    HypRetrieveRange 可以刷新或更新一系列信息,还有许多其他功能可能适合您的需求,具体取决于您需要刷新多少信息。您是否按照他们的建议导入了整个 smartview.bas 文件?

    【讨论】:

    • 感谢您的回复。我试过HypRetrieveRangeHypRefresh 使用这样的声明语句:Declare Function HypMenuVRefresh Lib "HsAddin.dll"() As Long Sub MRetrieve() X = HypMenuVRefresh() End Sub 但这些都不起作用我得到了同样的错误:编译错误:常量、固定长度字符串、数组、用户定义类型和声明语句不允许作为对象模块的公共成员。您是否遇到过此错误或知道如何解决?我认为这个刷新声明可能是最好的方法。
    【解决方案2】:
    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
    

    【讨论】:

      【解决方案3】:

      使用基本上模拟按下按钮的函数调用!

      刷新当前工作表

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

      刷新所有工作表

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

      *注意:0 的返回值为 'OK'

      【讨论】:

        【解决方案4】:

        这对我有用。您将能够将此宏分配给任何按钮。我没有使用全部刷新功能,而是在每个工作表中使用 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
        

        【讨论】:

          【解决方案5】:

          VBA 中 x64 的声明不正确。

          试试:

          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
          

          【讨论】:

            【解决方案6】:

            创建一个按钮并为其分配一个新的子程序。使用 call 命令调用公共函数。

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-12-15
              • 1970-01-01
              • 1970-01-01
              • 2013-05-20
              • 2019-06-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多