Ошибка индекса вне диапазона, когда кнопка отладки не отображается во всплывающем окне ошибки - PullRequest
0 голосов
/ 29 января 2020

Я получаю сообщение об ошибке:

"Ошибка времени выполнения 9": нижний индекс вне диапазона "

Excel не сообщает, какая строка запускается эта ошибка. Это только дает мне кнопки «ОК» и «Справка» во всплывающем окне с ошибкой. Мой Excel VBA обычно дает мне возможность отладки, но не в этом случае.

Я нашел три связанных темы. Я понимаю, что это, вероятно, из-за неправильной конфигурации массива. Вот код:

Sub ServiceNowRestAPIQuery()

    ' Replace with your Service Now Inctance URL
    InstanceURL = "https://dev#####.service-now.com"
    ' Replace with your Authorization code
    AuthorizationCode = "Basic ########################"
    ' Add more tables as comma seperated with no spaces
    TableNames = ("incident,problem")

    Dim ws As Worksheet
    Dim objHTTP As New WinHttp.WinHttpRequest
    Dim columns As String
    Dim Header As Boolean
    Dim jsonString As String
    Dim Resp As New MSXML2.DOMDocument60
    Dim Result As IXMLDOMNode
    Dim ColumnsArray As Variant

    TablesArray = Split(TableNames, ",")

    For x = 0 To UBound(TablesArray)

        'Table Choices
        Select Case TablesArray(x)

        Case "incident"
            Set ws = Sheets("incidents")
            columns = "number,company,close_notes,impact,closed_at,assignment_group"
            ColumnsArray = Split(columns, ",")
            OtherSysParam = "&sysparm_limit=100000"
            SysQuery = "&sysparm_query=active%3Dtrue"

        Case "problem"
            'Sheet name
            Set ws = Sheets("problem")
            'Columns to Query
            columns = "number,short_description,state"
            ColumnsArray = Split(columns, ",")
            'Query filter Parameters
            OtherSysParam = "&sysparm_query=state=1"
            'Other Query Parameters
            SysQuery = ""
        End Select

        Url = InstanceURL & "/api/now/table/"
        Table = TablesArray(x) & "?"
        sysParam = "sysparm_display_value=true&sysparm_exclude_reference_link=true" & OtherSysParam & SysQuery & "&sysparm_fields=" & columns
        Url = Url & Table & sysParam
        objHTTP.Open "get", Url, False
        objHTTP.SetRequestHeader "Accept", "application/xml"
        objHTTP.SetRequestHeader "Content-Type", "application/xml"

        ' Authorization Code
        objHTTP.SetRequestHeader "Authorization", AuthorizationCode
        objHTTP.Send                             '("{" & Chr(34) & "short_description" & Chr(34) & ":" & Chr(34) & "Test API2" & Chr(34) & "}")

        Debug.Print objHTTP.Status
        Debug.Print objHTTP.ResponseText
        ws.Select
        Header = False
        i = 1
        ThisWorkbook.Sheets("API").Range("A1").Select
        Cells.Clear

        Resp.LoadXML objHTTP.ResponseText
        For Each Result In Resp.getElementsByTagName("result")
            For n = 0 To UBound(ColumnsArray)
                If Header = False Then
                    ActiveCell.Offset(0, n).Value = ColumnsArray(n)
                End If
                ActiveCell.Offset(i, n).Value = Result.SelectSingleNode(ColumnsArray(n)).Text
            Next n
            i = i + 1
            Header = True
        Next Result
        'MsgBox Time
    Next x
End Sub

Этот код предназначен для интеграции книги Excel с экземпляром ServiceNow через веб-службы REST. Дополнительную информацию и источник кода можно найти на веб-странице ServiceNowElite ServiceNow в Microsoft Excel .

1 Ответ

2 голосов
/ 29 января 2020

Вместо полного выполнения кода отлаживайте в среде VBA. Go в код и запустите его, нажав F8, затем продолжая нажимать F8. Он будет go построчно, и вы сможете увидеть, какая строка вызовет ошибку.

РЕДАКТИРОВАТЬ:

Если в вашей книге нет листа с именем " инциденты "(или один с именем" API "), вы получите" Ошибка индекса вне диапазона ". Создайте эти листы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...