VBA(関数呼び出し)

https://www.sejuku.net/blog/28904
https://excel-ubara.com/excelvba1/EXCELVBA408.html


-- 1. 開発タブの挿入でボタンを作成
ActiveXコントロールのものを使用する

-- 2. デザインモードONで作成したボタンをダブルクリックするとエディタが開くので下記コードを記載。デザインモードOFFで実行

※ 下記設定必要
Microsoft Scripting Runtime」の参照設定
Microsoft XML, v6.0」を参照設定
VBA-JSONのインポート


Option Explicit

Dim httpReq As New XMLHTTP60   '「Microsoft XML, v6.0」を参照設定
Dim params As New Dictionary   '「Microsoft Scripting Runtime」を参照設定


Private Sub CommandButton1_Click()


    ' 画面を更新しない
    Application.ScreenUpdating = False
    ' 確認メッセージを表示しない
    Application.DisplayAlerts = False
    
        
    'step 1
    If do_Get() = False Then
        MsgBox "GETが失敗しました"
        GoTo Errend:
    End If
    
    'step 2
    If do_Post() = False Then
        MsgBox "Postが失敗しました"
        GoTo Errend:
    End If
    
    MsgBox ("処理完了")
    
Errend:
    
    ' 確認メッセージを表示する
    Application.DisplayAlerts = True
    ' 画面を更新する
    Application.ScreenUpdating = True

    'オブジェクトクリア
     Set httpReq = Nothing
     Set params = Nothing

End Sub

 

'''' GET関数

Function do_Get() As Boolean


    do_Get = False
    
    With httpReq
        .Open "GET", "http://localhost:9090/webadmin/denodo-scheduler-admin/public/api/projects?uri=//localhost:8000"
        .setRequestHeader "Authorization", "Basic YWRtaW46YWRtaW4="
        .setRequestHeader "Content-Type", "application/json"
        .send
    End With
    
    Do While httpReq.readyState < 4
        DoEvents
    Loop
    
    If httpReq.Status = 200 Then
        Debug.Print "GETが正常に終了しました"
        do_Get = True
    Else
        Debug.Print "GETが失敗しました"
    End If

 

End Function


'''' POST関数

Function do_Post() As Boolean
    
    do_Post = False
    
    params.Add "name", "project123"
    params.Add "description", "description of project123"
    
    With httpReq
        .Open "POST", "http://localhost:9090/webadmin/denodo-scheduler-admin/public/api/projects?uri=//localhost:8000"
        .setRequestHeader "Authorization", "Basic YWRtaW46YWRtaW4="
        .setRequestHeader "Content-Type", "application/json"
        .send JsonConverter.ConvertToJson(params)
    End With
    
    Do While httpReq.readyState < 4
        DoEvents
    Loop
    
    If httpReq.Status = 201 Then
        Debug.Print "POSTが正常に終了しました"
        do_Post = True
    Else
        Debug.Print "POSTが失敗しました"
    End If

End Function