こんにちは、おくやんです。
このブログでは、開発に役立つノウハウを実践的なコード例と共に紹介しています。
実装方法を教えてほしい!!
今回は、このようなお悩みを解決します。
本記事の内容
今回はExcel VBAで、API呼び出しを行う方法を紹介します。
本記事で紹介する実装方法を真似するだけで、ExcelからのAPI呼び出しが簡単に実装可能です。
最近ではAPIが利用ができるサービスが増えています。
VBAからAPIを活用してデータ分析や登録処理など、様々な用途に活用してください。
本記事と合わせて、ぜひともご確認ください!
こんにちは、おくやんです。 このブログでは、開発や業務効率化に役立つ実践的な技術やノウハウを紹介しています。 Backlogの課題を登録するのに時間がかかる。。。 課題を一括で登録する方法を知りたい! […]
APIとは
APIとは「Application Programming Interface」の略であり、訳すと「アプリケーション・プログラミング・インターフェース」という意味になります。
簡単に表すと、ソフトウェアやWebアプリの資源を利用するための接続口(インターフェース)のことです。
APIと一口に言っても、WEBアプリが提供するWEB APIやOS上でプログラミングを行うために提供されているAPIなど様々なものがあります。
その中でも今回は、WEB APIをVBAから呼び出す方法について解説をしていきます。
VBAでAPIを呼び出す方法 6ステップ
それではVBAでWEB APIを呼び出す方法について解説していきます。
具体的な実装手順は下記の6ステップです。
VBAでAPIを呼び出す方法 6ステップ
2. オブジェクトの初期化
3. HTTPヘッダーの設定
4. HTTPリクエストの送信
5. HTTPレスポンスコードの確認
6. レスポンスデータの取得
' 1. XMLHTTPオブジェクトの作成
Dim httpHandler As Object: Set httpHandler = CreateObject("MSXML2.XMLHTTP")
' 2. オブジェクトの初期化
httpHandler.Open requestMethod, requestUrl
' 3. HTTPヘッダーの設定
httpHandler.SetRequestHeader "apiKey", apiKey
' 4. HTTPリクエストの送信
httpHandler.Send requestBody
' 5. HTTPレスポンスコードの確認
Do While httpHandler.readyState < 4
DoEvents
Loop
If httpHandler.Status <> 200 Then
Debug.Print "WEB API実行エラー"
Debug.Print httpHandler.ResponseText
Exit Sub
End If
' 6. レスポンスデータの取得
Dim ans As String: ans = httpHandler.ResponseText
順番に見ていきましょう。
1. XMLHTTPオブジェクトの作成
まずはVBAからHTTP通信を行うため、XMLHTTPオブジェクトを作成します。
WEB APIを呼び出すためにHTTP通信が必要となりますが、XMLHTTPオブジェクトを利用すると 簡単に実装ができます。
作成方法は下記です。
Dim httpHandler As Object: Set httpHandler = CreateObject("MSXML2.XMLHTTP")
続いて作成したオブジェクトを初期化していきます。
2. オブジェクトの初期化
XMLHTTPオブジェクトを初期化していきます。
Open関数を呼び出して、リクエストの種類やURLを設定してください。
httpHandler.Open requestMethod, requestUrl
requestMethodにはGET・POSTなどHTTPリクエストの種類を指定し、requestUrlにはリクエスト先のURLを指定してください。
指定する値は、呼び出すAPIに合わせて変更しましょう。
3. HTTPヘッダーの設定
HTTPヘッダーの設定を行います。
呼び出すAPIによっては、APIキーなどの設定が必要です。
APIの仕様を確認し、必要に応じて設定してください。
SetRequestHeader関数を利用することで、HTTPヘッダーを設定することができます。
httpHandler.SetRequestHeader "apiKey", apiKey
4. HTTPリクエストの送信
ここまで準備ができたら、HTTPリクエストを送信しましょう。
送信はSendメソッドで行うことができます。
httpHandler.Send requestBody
HTTPリクエストボディに値を設定したい場合は、引数を渡すことで設定可能です。
5. HTTPレスポンスコードの確認
APIの実行結果を確認するため、HTTPレスポンスコードの確認を行います。
まずはreadyStateプロパティを利用し、応答を待ちましょう。
Do While httpHandler.readyState < 4
DoEvents
Loop
サンプルでは値が4(受信完了)になるまで、ループしています。
受信完了後はStatusプロパティでHTTPレスポンスコードの確認ができます。
If httpHandler.Status <> 200 Then
' 実行エラー時の処理
End If
レスポンスコードの値に応じて、処理を行いましょう。
6. レスポンスデータの取得
最後にレスポンスデータの取得を行います。
ResponseTextプロパティから取得することが可能です。
Dim ans As String: ans = httpHandler.ResponseText
レスポンスデータの形式は呼び出すAPIによって異なります。
CSV形式やJSON形式など様々あるので呼び出すAPIの仕様を確認してみてください。
以上で実装は完了です。
まとめ: VBAからAPI呼び出しをしてみよう
今回はExcel VBAで、API呼び出しを行う方法についてまとめました。
一見難しそうに思える処理ですが、下記6つのステップで簡単に実装できます。
2. オブジェクトの初期化
3. HTTPヘッダーの設定
4. HTTPリクエストの送信
5. HTTPレスポンスコードの確認
6. レスポンスデータの取得
API呼び出しが行えると、データ分析、一括登録など幅広いツールが作成できます。
是非とも挑戦してみてください。
こんにちは、おくやんです。 このブログでは、開発や業務効率化に役立つ実践的な技術やノウハウを紹介しています。 Backlogの課題を登録するのに時間がかかる。。。 課題を一括で登録する方法を知りたい! […]
最後まで読んでいただき、ありがとうございます。