ネクストエンジンAPIにEXCELブックから接続する

##はじめに
　EC業界ではおなじみネクストエンジンのAPIに対して
MS Excelブックから接続、データ取得までを記載します。
アカウントの取得、アプリケーションの申請等下準備については割愛しますが、いずれドキュメント化したいと思います。
Excelブックという便利な記憶領域があるので、ネクストエンジンから取得したアクセストークン等はセルの中に入れておけば良いと思います。

以下にサンプルコードを示します。
必要な取得条件を設定し、ネクストエンジンAPIに接続、Json経由で必要な受注明細データを取得してExcelシートに貼り付けています。
※JsonのパースについてはJsonConverterをインポートして使用しています。(参考サイトを参照ください)

###サンプルコード
```VB:getmeisai.bas
'受注明細処理取得（ネクストエンジンAPI接続）
Private Sub getmeisai()
    Dim Token As String 'アクセストークン
    Dim Refresh As String 'リフレッシュトークン
    Dim jsonObj As Object 'パースしたjson用のオブジェクト
    Dim httpReq As New XMLHTTP60
    Dim i As Integer 'loopカウンタ
    Dim rngToken As Range
    Dim rngRefresh As Range
    Dim ws As Excel.Worksheet
    Dim ary() As Variant
    Dim cnt As Long 'レコード件数
    
    '取得する受注明細フィールド
    Const FIELDS As String = "&fields=receive_order_row_receive_order_id,receive_order_purchaser_name,receive_order_row_goods_id,receive_order_row_stock_allocation_quantity"
    
    '受注明細を取得するときの条件（受注分類タグ=[hoge] AND 受注状態区分=納品書印刷済み）
    Const WHERE As String = "&receive_order_cancel_type_id-eq=0&receive_order_gruoping_tag-neq=[hoge]&receive_order_row_goods_name-like=%hoge%&receive_order_order_status_id-eq=40"
    
    Set ws = Worksheets("hoge")
    Set rngToken = ws.Range("J2")
    Set rngRefresh = ws.Range("J3")
    
    '画面からアクセストークン・リフレッシュトークンをセットする
    Token = rngToken.Value
    Refresh = rngRefresh.Value
    
    With httpReq
        'リクエストURLとエンドポイント
        .Open "POST", "https://api.next-engine.org/api_v1_receiveorder_row/search"
        'ヘッダ
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        'パラメータを入れて送信
        .send ("&access_token=" & Token & "&refresh_token=" & Refresh & FIELDS & WHERE)
        
        'jsonをパースする
        Set jsonObj = JsonConverter.ParseJson(.responseText)
    End With
    Set httpReq = Nothing
    
    '取得したトークンをそれぞれ画面に戻す
    If jsonObj("result") = "success" Then
        rngToken.Value = jsonObj("access_token")
        rngRefresh.Value = jsonObj("refresh_token")
        rngToken.Offset(0, 1).Value = jsonObj("access_token_end_date")
        rngRefresh.Offset(0, 1).Value = jsonObj("refresh_token_end_date")
        Set rngToken = Nothing
        Set rngRefresh = Nothing
        
        ws.Range("A2:D1000").ClearContents
        '件数を取得
        cnt = jsonObj("count")
        '取得した検品対象データを配列に埋め込む
        ReDim Preserve ary(cnt - 1, 3)
        For i = 1 To cnt
            Application.StatusBar = "処理中" & i & "/" & jsonObj("count")
            ary(i - 1, 0) = CStr(jsonObj("data")(i)("receive_order_purchaser_name"))
            ary(i - 1, 1) = CLng(jsonObj("data")(i)("receive_order_row_receive_order_id"))
            ary(i - 1, 2) = CStr(jsonObj("data")(i)("receive_order_row_goods_id"))
            ary(i - 1, 3) = CInt(jsonObj("data")(i)("receive_order_row_stock_allocation_quantity"))
        Next i
        
        'シートにはめ込む
        ws.Range(ws.Cells(2, 1), ws.Cells(cnt + 1, 4)).Value = ary
        ThisWorkbook.Save
    Else
        Call MsgBox("受注情報を取得できませんでした ", vbExclamation, "エラー")
    End If
       
    Set jsonObj = Nothing
    Application.StatusBar = ""
End Sub
```

##参考サイト
[エクセルVBAでHTTPリクエストをする最も簡単なプログラム](https://tonari-it.com/excel-vba-http-request/)
[【VBA】JSONファイルの内容をEXCELファイルに読み込む](https://minor.hatenablog.com/entry/2016/10/11/205527)
[宇宙一わかりやすい？VBA-JSONを使ったJSONパースのしかた](https://qiita.com/emesh/items/0834a5ad373d2ade6a93)