【Excel VBA】VBAを利用してAPI呼び出しをする

VBA 【Excel VBA】VBAを利用してAPI呼び出しをする

こんにちは、おくやんです。

このブログでは、開発に役立つノウハウを実践的なコード例と共に紹介しています。

VBAからWEB API呼び出しを行う方法が知りたい!
実装方法を教えてほしい!!

今回は、このようなお悩みを解決します。

本記事の内容

APIとはどのようなものなのかをご紹介
VBAでAPIを呼び出す方法を6ステップで紹介

今回はExcel VBAで、API呼び出しを行う方法を紹介します。

本記事で紹介する実装方法を真似するだけで、ExcelからのAPI呼び出しが簡単に実装可能です。

最近ではAPIが利用ができるサービスが増えています。

VBAからAPIを活用してデータ分析や登録処理など、様々な用途に活用してください。

おくやん
下記でExcel VBAからAPIを呼び出す技術を利用したツールを紹介しています。
本記事と合わせて、ぜひともご確認ください!
関連記事

こんにちは、おくやんです。 このブログでは、開発や業務効率化に役立つ実践的な技術やノウハウを紹介しています。 Backlogの課題を登録するのに時間がかかる。。。 課題を一括で登録する方法を知りたい! […]

APIとは

APIとは

APIとは「Application Programming Interface」の略であり、訳すと「アプリケーション・プログラミング・インターフェース」という意味になります。

簡単に表すと、ソフトウェアやWebアプリの資源を利用するための接続口(インターフェース)のことです。

APIと一口に言っても、WEBアプリが提供するWEB APIやOS上でプログラミングを行うために提供されているAPIなど様々なものがあります。

その中でも今回は、WEB APIをVBAから呼び出す方法について解説をしていきます。

VBAでAPIを呼び出す方法 6ステップ

VBAでAPIを呼び出す処理の実装方法 6ステップ

それではVBAでWEB APIを呼び出す方法について解説していきます。

具体的な実装手順は下記の6ステップです。

VBAでAPIを呼び出す方法 6ステップ

1. XMLHTTPオブジェクトの作成
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呼び出しをしてみよう

まとめ: VBAからAPI呼び出しをしてみよう

今回はExcel VBAで、API呼び出しを行う方法についてまとめました。

一見難しそうに思える処理ですが、下記6つのステップで簡単に実装できます。

1. XMLHTTPオブジェクトの作成
2. オブジェクトの初期化
3. HTTPヘッダーの設定
4. HTTPリクエストの送信
5. HTTPレスポンスコードの確認
6. レスポンスデータの取得

API呼び出しが行えると、データ分析、一括登録など幅広いツールが作成できます。

是非とも挑戦してみてください。

関連記事

こんにちは、おくやんです。 このブログでは、開発や業務効率化に役立つ実践的な技術やノウハウを紹介しています。 Backlogの課題を登録するのに時間がかかる。。。 課題を一括で登録する方法を知りたい! […]

最後まで読んでいただき、ありがとうございます。


【Excel VBA】VBAを利用してAPI呼び出しをする
最新情報をチェックしよう!