Обновление данных с помощью VBA и VB Script в Smart View for Oracle

У меня есть файл Excel (Get_Hyperion_Data.xlsm) с несколькими рабочими листами, каждый из которых содержит отчет по гипериону, где данные извлекаются с помощью функции "HsGetValue()".

Я создал макрос, который позволяет мне указывать две переменные (год и сценарий) и обновлять каждый лист после обновления указанных переменных. Если я открою этот файл Excel, укажу переменные и запусту макрос, весь отчет обновится без проблем, как и ожидалось. Я предоставил код для макроса ниже

Я хотел сделать еще один шаг в плане автоматизации и создать скрипт VB, который бы открывал Get_Hyperion_Data.xlsm, определял переменные и вызывал макрос обновления.

Однако, когда я пытаюсь запустить макрос через VB Script, происходит что-то странное. Я получаю сообщение об ошибке

Msgstr "Ошибка Essbase: член [Сценарий] неуместен".

Это странно, учитывая, что я не получаю никаких ошибок при открытии Excel и запуске макроса. Только когда я пытаюсь сделать все через VB Script, я получаю это сообщение.

Вот простой скрипт, который я запускаю:

' Refresh_Hyperion_Reports.vbs
' Open Hyperion report and launch macro to refresh values
' ------------------------------------------------'


Option Explicit



  Dim xlApp

  Dim xlBook

  Dim colArgs

  Dim argLocation, argYear, argScenario, argUser, argPassword, argConnection


  Set colArgs = WScript.Arguments.Named


  argLocation = Cstr(colArgs.Item("location"))

  argYear = Cstr(colArgs.Item("year"))

  argScenario = Cstr(colArgs.Item("scenario"))

  argUser = Cstr(colArgs.Item("user"))

  argConnection = Cstr(colArgs.Item("connection"))


  Set xlApp = CreateObject("Excel.Application")

  xlApp.Visible = True

  xlApp.DisplayAlerts = True

  Set xlBook = xlApp.Workbooks.Open(argLocation, 0, False) 


  xlApp.Run "call_RefreshReports", argYear, argScenario, argUser, argPassword, argConnection


  xlBook.Save

  xlApp.ActiveWorkbook.Close


  xlApp.Quit


  Set xlBook = Nothing

  Set xlApp = Nothing

Кажется, я не нашел никаких конкретных рекомендаций относительно этого взаимодействия VB Script с Hyperion, поэтому я спрашиваю, сталкивался ли кто-либо из вас с этой проблемой? Ниже приведен макрос VBA:

```

Sub RefreshReports(valYear, valScenario, valUser, valPassword, valConnection)

    Dim sh_array As Variant
    Dim refresh_range As Range


    'Disable screen updating, disable automatic calculations 
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    Application.AutoCorrect.AutoFillFormulasInLists = False


    'Error handling
    On Error GoTo EndFunction




    'Specify data/report sheets
    sh_array = Array("Validation", "Total Operating Expenses", "Total Revenue", "Stats Accounts", "Net Income After Taxes")

    'assign and convert function parameters
    shParameters.Range("rangeYear").Value = CStr(valYear)
    shParameters.Range("rangeScenario").Value = CStr(valScenario)
    ThisWorkbook.RefreshAll
    Application.Calculate


    'Loop through each report sheet,connect to hyperion with parametred username and password and refresh the sheet
    For i = LBound(sh_array) To UBound(sh_array)
        Debug.Print "Refreshing Sheet: " & ThisWorkbook.Sheets(sh_array(i)).Name
        ThisWorkbook.Sheets(sh_array(i)).Activate
        x = HypConnect(ThisWorkbook.Sheets(sh_array(i)).Name, valUser, valPassword, valConnection)


        Call HypMenuVRefresh
        Application.Wait Time + TimeSerial(0, 0, 5)
        Application.CalculateFullRebuild
        DoEvents
    Next i






    HypDisconnectAll
    shParameters.Activate
    RefreshReports = True
    Application.AutoCorrect.AutoFillFormulasInLists = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    Application.ScreenUpdating = True

End Sub

0 ответов

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