ExcelでAPI連携を行うと、天気予報、為替レート、在庫情報、顧客データ、社内システムの集計結果などを、外部サービスから取得して表へ反映できます。
手作業でWebサイトを確認して転記する時間を減らせるため、定期レポートや業務管理表の更新を効率化したい場面で便利です。
API連携にはPower Queryを使う方法、VBAでHTTPリクエストを送る方法、JSON形式のデータを表に整形する方法があります。
ExcelでAPI連携する基本の流れは、APIのURLを確認し、認証情報を設定し、JSONなどの応答データを表へ変換することです。
この記事では、外部サービスのデータ取得に必要な準備から、Power QueryとVBAを使った連携方法、エラーが起きた場合の確認ポイントまで解説していきます。
ExcelでAPI連携を始める準備
それではまず、Excelで外部サービスのデータを取得する前に必要となる準備について解説していきます。
| 項目 | サンプル内容 | 確認すること |
|---|---|---|
| APIのURL | https://api.example.com/v1/sales | 取得先とパラメーター |
| 認証情報 | APIキー | 安全な保管方法 |
| 応答形式 | JSON | 列への展開方法 |
APIの仕様書とエンドポイントの確認
API連携では、最初に提供元の仕様書を読み、どのURLへアクセスするのかを確認します。
データ取得先となるURLはエンドポイントと呼ばれ、売上一覧、商品情報、利用者情報など、取得したい情報によって異なります。
同じサービスでも、一覧取得用、詳細取得用、登録用、更新用ではアクセス先や必要な項目が変わります。
Excelでデータを読むだけなら、通常はGETという取得用のリクエストを利用します。

たとえば日付を指定するAPIでは、URLの末尾に開始日や終了日を渡す場合があります。
取得URLの例として、https://api.example.com/v1/sales?from=2026-10-01&to=2026-10-31 のように、条件をURLへ含める形式があります。
URLをブラウザーで開いて結果が表示されるAPIもありますが、認証が必要なAPIではそのまま表示できないこともあります。
仕様書では、URL、必須パラメーター、認証方式、返却される項目名、利用回数の上限を確認しておきましょう。
APIキーと認証情報の管理
外部サービスのAPIを使うには、利用登録後に発行されるAPIキーやアクセストークンが必要になるケースがあります。
APIキーはサービスを利用するための識別情報であり、パスワードに近い重要な文字列です。
APIキーをワークシートの目立つセルへそのまま記載したり、他者へ共有するファイルに保存したりすることは避けましょう。

個人利用であっても、キーが流出すると第三者にAPIを使われ、利用制限や課金につながる可能性があります。
Power Queryでは資格情報の設定画面を利用し、VBAでは環境変数やアクセス権を制御した設定ファイルを活用すると管理しやすくなります。
会社のシステムに接続する場合は、情報システム部門が定めた認証方法や保管ルールに従うことも大切です。
JSONと表形式データの違い
APIから返されるデータは、CSVではなくJSON形式であることが多いです。
JSONは項目名と値を組み合わせて階層的に表現するデータ形式で、Excelのセルへそのまま貼り付けても一覧表としては扱いにくい場合があります。
たとえば売上データに商品名、数量、単価、顧客情報が含まれると、顧客情報だけがさらに内側の階層へ入っていることがあります。
Power Queryを使うと、JSONのレコードやリストを展開し、行と列からなる通常のExcelテーブルへ変換できます。
APIの応答がJSONであっても、最終的には日付、商品名、数量、売上金額といった分析しやすい列へ整えることが重要です。
取得したデータをどのシートへ読み込み、既存データを置き換えるのか、履歴として追加するのかも、連携前に決めておくと後の作業が安定します。
【操作のポイント】API連携を始める前に、取得先URL、認証方法、返却形式、利用制限を仕様書でそろえて確認します。
Power Queryによる外部データの取得
続いては、ExcelのPower Queryを使ってAPIのデータを取得する方法を確認していきます。
| 操作 | Excelのメニュー | 目的 |
|---|---|---|
| URL接続 | データ | APIへ接続する |
| 変換 | Power Query エディター | JSONを表にする |
| 更新 | すべて更新 | 最新情報を取得する |
Webからのデータ取得画面
Power Queryは、コードをほとんど書かずに外部データを取得、加工、読み込みできるExcelの機能です。
リボンのデータタブからデータの取得を選び、その他のデータソースからWebをクリックします。
表示された画面にAPIのURLを入力すると、ExcelがWeb上のデータへ接続します。

URLに検索条件を含める場合は、仕様書どおりに文字列を入力する必要があります。
たとえば日本語や空白をURLへ入れるときは、URLエンコードが必要になることもあります。
初回接続時に資格情報の入力画面が出た場合は、API提供元が指定する匿名、基本、Web APIなどの認証方式を選びます。
認証方式が合わないと、URL自体が正しくても401や403といったアクセスエラーになります。
JSONデータの展開と列の整形
接続に成功すると、ナビゲーターまたはPower Query エディターにJSONの内容が表示されます。
一覧のように見えるデータはリスト、項目がまとまったデータはレコードとして表示されることがあります。
リストをテーブルに変換し、列見出しにある展開ボタンを押すと、内部の項目を列として取り出せます。

不要な列を削除し、日付型、整数型、通貨型などのデータ型を設定すると、集計や数式で扱いやすくなります。
売上データでは、注文日を日付型、数量を整数、単価と売上金額を小数または通貨型にそろえると、ピボットテーブルやSUMIFS関数で正しく集計できます。
列の順番を整える際は、後からAPIの仕様が変わった場合も想定し、必要な列だけを明確に残す設計がおすすめです。
読み込み先と更新設定
データの整形が終わったら、ホームタブの閉じて読み込むを選択します。
新しいワークシートへテーブルとして読み込むと、取得データと手入力のデータを分けて管理できます。
Power Queryで読み込んだ表は、データタブのすべて更新で再取得できるため、毎回コピーして貼り付ける必要がありません。
更新前の履歴を残したい場合は、取得用シートと履歴保存用シートを分ける方法が向いています。
定期更新を設定すると便利ですが、APIには1日あたりまたは1分あたりの呼び出し上限があるため、短すぎる間隔で更新しないように注意しましょう。
【操作のポイント】Power Queryでは、取得後の列名、データ型、読み込み先を整えてから更新運用へ進みます。
VBAによるAPIリクエストの実行
続いては、VBAを使ってAPIへリクエストを送り、Excelシートに結果を記録する方法を確認していきます。
| セル | 項目 | サンプル値 |
|---|---|---|
| A1 | 取得日 | 2026/10/07 |
| B1 | 商品名 | ノートPC |
| C1 | 在庫数 | 42 |
VBAエディターと参照設定
VBAでAPI連携を行う場合は、ExcelでAltキーとF11キーを押し、Visual Basic Editorを開きます。
挿入メニューから標準モジュールを追加し、その中へAPI取得用の処理を書きます。
VBAはボタンを押したときだけ取得する、複数の条件でURLを作る、取得後に集計表まで更新するといった柔軟な自動化に向いています。
WindowsのExcelでは、WinHttpRequestやMSXML2.XMLHTTPを利用してHTTP通信を行うことがあります。
ただし利用環境によって参照設定やセキュリティポリシーが異なるため、社内PCで動かない場合は情報システム部門へ確認しましょう。
HTTPリクエストを送るVBAコード
以下は、APIのURLにGETリクエストを送り、返された文字列をシートへ表示する基本例です。
Sub GetApiData()
Dim http As Object
Dim apiUrl As String
Dim responseText As String
apiUrl = "https://api.example.com/v1/inventory"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", apiUrl, False
http.setRequestHeader "Authorization", "Bearer YOUR_API_TOKEN"
http.Send
If http.Status = 200 Then
responseText = http.responseText
Worksheets("API取得").Range("E2").Value = responseText
Else
MsgBox "取得に失敗しました。HTTPステータス " & http.Status
End If
End Sub
apiUrlには実際に利用するAPIのURLを設定し、Authorizationの部分は提供元の認証方式に合わせて変更します。
HTTPステータスが200なら一般的には成功を表し、401は認証情報の不備、404はURLの誤り、429は利用回数超過を示すことがあります。
APIキーをコード内へ直接書く場合、マクロ有効ブックを共有するとキーも共有される可能性があります。検証用と本番用のキーを分け、公開範囲を限定しましょう。
取得結果をワークシートへ書き込む方法
APIの応答をそのまま1つのセルへ入れるだけでは、Excelでの集計や検索に活用しにくいことがあります。
JSONを解析して、1行目のヘッダーの下へ商品名や在庫数を書き込む処理を作ると、通常の表として利用できます。
サンプルデータで1行目をヘッダーとする場合、A2から下へ取得データを出力し、既存行をクリアしてから書き込む流れが分かりやすい構成です。
数式で取得後の在庫差を計算するなら、D1に在庫差、D2に=C2-B2を入力し、オートフィルで下方向へコピーします。
在庫差 = 最新在庫数 − 基準在庫数
Excelテーブル化した範囲へ書き込むと、フィルター、並べ替え、ピボットテーブル、グラフにもつなげやすくなります。
【操作のポイント】VBAで連携する場合は、通信の成功判定、認証情報、JSONの表形式への変換を分けて作ると修正しやすくなります。
JSONデータの表形式への変換
続いては、APIから受け取ったJSONデータを、Excelで扱いやすい表へ変換する考え方を確認していきます。
| JSONの項目 | Excelの列 | 利用例 |
|---|---|---|
| date | 取得日 | 日別集計 |
| name | 商品名 | 検索 |
| quantity | 数量 | 在庫管理 |
配列形式のデータと行への展開
APIでは、複数件のデータが配列として返されることがよくあります。
たとえば商品が3件なら、商品ごとの情報を3行として出力するのが、Excelの表として自然な形です。
Power Queryではリストをテーブルへ変換して展開し、VBAでは配列の件数を順番に処理して行番号を増やします。
1件のJSONを1セルへ保存するのではなく、1レコードを1行へ配置することが、後の集計精度を高める基本です。
項目が欠けているデータもあり得るため、空欄、Null、ゼロの意味を区別して扱う設計も必要になります。
日付と数値のデータ型の統一
APIが返す日付は、2026-10-07T09:00:00Zのような形式になることがあります。
そのまま文字列として扱うと、月別集計や日付順の並べ替えで意図しない結果になる場合があります。
Power Queryで日付時刻型へ変換し、日本時間へ補正する必要があるかも確認しましょう。
数値に見える値でも文字列として返るAPIがあるため、数量や金額はExcel上で数値型になっているかを必ず確認します。
金額が文字列のままだと、SUM関数で合計できなかったり、右揃えにならなかったりします。取得直後にデータ型を整える習慣が大切です。
テーブル化と集計数式の活用
整形したデータ範囲は、CtrlキーとTキーでExcelテーブルに変換しておくと便利です。
テーブルでは新しい行が追加されたとき、数式や書式が自動的に引き継がれやすくなります。
売上金額を算出する場合、D1を売上金額、D2を=C2*B2とし、数量と単価の列を掛け合わせます。
売上金額 = 数量 × 単価
1行目がヘッダーであることを前提に、D2へ数式を入れた後、セル右下のフィルハンドルをダブルクリックするか、下方向へオートフィルします。
取得データが更新されるたびに計算列も更新されるため、API連携と数式による分析を組み合わせると実務で使いやすくなります。
【操作のポイント】JSONを表へ変換した後は、1行目をヘッダーにそろえ、日付と数値の型を整え、テーブル化して集計につなげます。
API連携時のエラーとセキュリティ対策
続いては、ExcelのAPI連携で発生しやすいエラーと、安全に運用するための対策を確認していきます。
| 現象 | 主な原因 | 確認方法 |
|---|---|---|
| 401エラー | 認証情報の誤り | APIキーと形式 |
| 429エラー | 回数制限 | 更新間隔 |
| 文字化け | 文字コード | 応答の形式 |
HTTPステータスコードの確認
APIに接続できないときは、最初にHTTPステータスコードを確認します。
200は成功、400はリクエスト内容の不備、401は認証されていない状態、403は権限不足、404は取得先URLが見つからない状態を表すことが一般的です。
エラー本文には、必須パラメーターの不足やトークン期限切れなど、原因を特定する手掛かりが含まれる場合があります。
VBAではhttp.Statusだけでなくhttp.responseTextも確認し、Power Queryではエラー詳細を展開して内容を読みましょう。
更新回数とタイムアウトの管理
無料プランのAPIでは、1日あたりの利用回数や1分あたりの呼び出し回数が制限されていることがあります。
Excelを開くたびに自動更新すると、意図せず上限に達するかもしれません。
必要な頻度だけ更新し、同じデータを何度も取得しないようにキャッシュや更新日時を活用することが重要です。
大量のデータを取得する場合は、期間を月ごとに区切る、ページ番号を指定するなど、API仕様に沿って処理を分割します。
タイムアウトが起きるときは、通信環境だけでなく、取得件数やAPI側の混雑も確認対象です。
認証情報とファイル共有の注意点
APIキー、アクセストークン、Basic認証のパスワードは、外部へ漏れないように扱う必要があります。
マクロ有効ブックをメールで配布する場合、コードや接続設定に秘密情報が残っていないか確認しましょう。
共有ブックでは、利用者ごとにAPIキーを発行する、キーを直接埋め込まず管理システムから取得するなどの方法が検討できます。
信頼できないAPIや出所不明のVBAコードを使うことは避けます。外部サービスの利用規約、個人情報の取り扱い、社内ルールも確認してから運用しましょう。
【操作のポイント】エラー時はステータスコードと応答内容を確認し、認証情報と更新回数は必要最小限に管理します。
API連携を活用したExcel業務の自動化
続いては、API連携で取得した外部データを日々のExcel業務へ活用する方法を確認していきます。
| 活用場面 | 取得するデータ | Excelでの処理 |
|---|---|---|
| 売上管理 | 受注情報 | 日次集計 |
| 在庫管理 | 在庫数 | 不足判定 |
| 経営レポート | 為替や広告実績 | グラフ化 |
定期レポートへの反映
Power Queryで取得したデータを集計シートの元データにすると、定期レポートの作成作業を短縮できます。
売上、問い合わせ件数、広告費、在庫数などをAPIから取得し、ピボットテーブルやグラフを更新する流れです。
取得用シートと報告用シートを分けると、データ構造が変わってもレポート画面を維持しやすくなります。
更新日時をセルへ表示しておけば、レポートを見る人も情報の鮮度を判断できます。
条件付き書式による異常値の発見
APIから取得した数値には、在庫切れ、急な売上減少、予算超過などの確認が必要な値が含まれることがあります。
条件付き書式を設定すると、一定数値を下回ったセルや、前日比が大きく変化したセルを色で目立たせられます。
たとえば在庫数が10未満の場合に赤色で表示するルールを作ると、データ更新後に確認すべき商品をすぐに見つけられます。
数式を利用する場合は、E2に=IF(C2<10,”要確認”,””)を入力し、下方向へオートフィルします。
判定式 = IF関数で在庫数が基準値未満かどうかを確認する処理
自動取得だけで完結させず、異常を人が確認するための表示も設計することが実用的な連携につながります。
手動更新と自動化の使い分け
API連携は便利ですが、すべてを自動更新にする必要はありません。
重要な報告書を作る直前だけ手動更新する運用なら、意図しないデータ更新やAPI上限超過を防ぎやすくなります。
一方で、毎朝確認する在庫や日次実績のように、更新頻度が明確な業務では、VBAマクロやタスクスケジューラとの組み合わせが役立つ場合があります。
利用する人、更新する時刻、エラーが出たときの担当者まで決めると、連携ファイルが属人化しにくくなります。
【操作のポイント】API取得用の表、計算用の表、報告用の表を分け、更新頻度に応じて手動操作と自動化を使い分けます。
まとめ 外部サービスのデータ取得でエクセルをAPI連携する方法
ExcelでAPI連携する方法では、まずAPI提供元の仕様書でエンドポイント、認証方式、JSONなどの応答形式を確認します。
Power Queryを使えば、WebからAPIのURLへ接続し、JSONデータを展開してExcelテーブルへ読み込めます。
VBAを使う方法では、HTTPリクエストを送信し、取得結果を任意のセルやシートへ書き込む自動化が可能です。
外部サービスのデータ取得で重要なのは、データを単に読み込むことではなく、日付や数値の型を整え、集計や判断に使える表へ変換することです。
APIキーなどの認証情報は慎重に扱い、HTTPステータスコード、利用回数制限、更新頻度を確認しながら安全に運用しましょう。
まずはPower Queryで小さなデータ取得から試し、必要に応じてVBAや数式による自動化へ広げると、Excel業務を無理なく効率化できます。