ExcelのWEBSERVICE関数の使い方|Webサービスからデータを取得する(※廃止予定)

スポンサーリンク

「ExcelのセルにURLを書いたら、そのままWebの情報を引っ張ってこれないかな?」

為替レートや天気情報、RSSフィードなど、Webにある情報をExcelに取り込みたい場面ってありますよね。毎回コピペするのは面倒ですし、自動更新されれば作業がかなり楽になります。

ExcelのWEBSERVICE関数を使えば、URLを指定するだけでWebサービスからデータを取得できますよ。FILTERXML関数と組み合わせれば、欲しい項目だけをスマートに抜き出すこともできます。

この記事では、ExcelのWEBSERVICE関数の基本構文から、FILTERXML・ENCODEURLとの連携、現状の「廃止扱い」の注意点、Power Queryなど代替手段までを丁寧に解説します。

対象環境: Excel 2013以降のデスクトップ版(Windows/Mac)。Excel for the web・Excel Mobile では利用できません。また、2019年12月以降のMicrosoft 365では新規ファイルでの利用が廃止扱いになっています(後述)。

ExcelのWEBSERVICE関数とは?Webからデータを取得するWeb関数

ExcelのWEBSERVICE関数は、指定したURLにアクセスしてその応答データをセルに返してくれるWeb関数です。Excel 2013で追加されました。

「わざわざブラウザでページを開いてコピペする」という手間を、関数ひとつで自動化できる便利な関数ですよ。

WEBSERVICE関数の読み方と位置づけ

WEBSERVICEは「ウェブサービス」と読みます。英語名そのままです。

ExcelにはWeb関連の関数が3つあります。この3つはセットで使うのが基本ですよ。

関数役割
ENCODEURLURLに含める文字列をエンコードする
WEBSERVICEURLにアクセスしてデータを取得する
FILTERXML取得したXMLデータから必要な要素を抜き出す

単独で使うよりも、組み合わせて使うと本領を発揮します。

WEBSERVICE関数でできること

WEBSERVICE関数を使うと、次のようなことができます。

  • Web APIからJSONやXMLデータを取得する
  • RSSフィードを取り込んで最新記事の一覧を作る
  • 為替レートや株価などの外部データを自動取得する
  • 郵便番号検索APIで住所を自動入力する
  • 天気予報APIで1週間の天気をExcelに表示する

要するに、「URLで取得できるデータはExcelに引き込める」という便利な関数なんです。

対応バージョンと利用制限

ここは重要なポイントなので、しっかり押さえてくださいね。

環境利用可否
Excel 2013〜2021(Windows/Mac デスクトップ版)利用可能
Microsoft 365(Windows デスクトップ版)廃止扱い(既存ファイルのみ動作)
Excel for the web(ブラウザ版)利用不可
Excel Mobile(iOS/Android)利用不可

Microsoft 365では、2019年12月以降の新規ファイルではWEBSERVICE関数が利用できません。これは「deprecated(廃止扱い)」というステータスで、古いファイルでは引き続き動作するものの、新規入力はブロックされるという扱いです。

セキュリティ上の懸念と、Power Queryなどより高機能な代替手段が登場したことが廃止の背景ですよ。代替手段については記事後半で紹介しますね。

ExcelのWEBSERVICE関数の書式と引数

基本構文

=WEBSERVICE(URL)

カッコの中に、アクセスしたいURLを文字列として指定します。非常にシンプルな構文ですね。

引数の意味

引数必須/任意説明
URL必須アクセス先のURL。HTTPまたはHTTPSのみ対応。最大32,767文字まで

引数はURLひとつだけなので、とても覚えやすい関数です。

戻り値

戻り値は、指定したURLにアクセスして取得した生の文字列データです。XML形式、JSON形式、プレーンテキストなど、サーバーが返す内容がそのまま返ってきます。

戻り値の文字列の長さは最大32,767文字までです。セルの表示上限と同じですね。これを超えるデータは切り捨てられるので、大量データの取得には向いていません。

対応プロトコル

HTTPまたはHTTPSのみ対応しています。FTPやSMTP、ファイルパス(file://)は使えません。

また、サーバー側でCookie認証や複雑な認証ヘッダーを要求するAPIには対応していません。認証不要の公開APIを使うのが基本ですよ。

ExcelのWEBSERVICE関数の基本的な使い方

まずはシンプルな例で動きを確認してみましょう。

RSSフィードを取得する

試しにRSSフィードのURLを指定してみます。A1セルに次の数式を入力します。

=WEBSERVICE("https://news.yahoo.co.jp/rss/topics/top-picks.xml")

結果として、RSSフィードのXMLデータがそのまま文字列でA1セルに返ってきます。セルをダブルクリックすると、...ニュース見出し... のような長い文字列が入っているのが確認できますよ。

このままだと読みにくいので、次のFILTERXML関数で必要な部分だけを抜き出します。

セル参照でURLを指定する

URLを直接書かずに、セル参照で渡すこともできますよ。

セル内容
A1https://example.com/api/data.xml
B1=WEBSERVICE(A1)

B1セルに =WEBSERVICE(A1) と入力すると、A1セルのURLにアクセスした結果が返ります。

URLを変更するだけで結果を切り替えられるので、複数のAPIを使い分ける用途に便利ですよ。

動的なURLを作る

URLの一部を変数として組み立てたいケースもあります。& で文字列を連結すれば、セル値を組み込んだURLが作れますよ。

=WEBSERVICE("https://api.example.com/weather?city=" & A1)

A1セルに「tokyo」と入れれば ?city=tokyo、「osaka」と入れれば ?city=osaka のURLにアクセスできます。

ただし日本語を含む場合は、後述のENCODEURL関数でエンコードする必要があります。半角英数字だけなら、このシンプルな連結で問題ありませんよ。

ExcelのWEBSERVICE関数の実践的な使い方・応用例

基本がわかったところで、実務で使う応用例を3つ紹介します。

FILTERXML関数と組み合わせてXMLから値を抜き出す

WEBSERVICE関数の一番メジャーな使い方が、FILTERXML関数との組み合わせです。取得したXMLから、XPathで指定した要素だけを抜き出せます。

=FILTERXML(WEBSERVICE("URL"), "XPath")

たとえばRSSフィードの最新記事タイトルを1件取得するなら、次のように書きます。

=FILTERXML(WEBSERVICE("https://news.yahoo.co.jp/rss/topics/top-picks.xml"), "//item/title")

Microsoft 365やExcel 2021以降ならスピル機能で複数行に展開されますよ。Excel 2013〜2019では配列数式として入力してください。

XPathの書き方は、ExcelのFILTERXML関数の使い方 で詳しく解説しています。

ENCODEURL関数で日本語URLをエンコードする

URLに日本語や記号を含める場合は、ENCODEURL関数でエンコードしてから渡します。

=WEBSERVICE("https://api.example.com/search?q=" & ENCODEURL(A1))

A1に「経理処理」と入れた場合、ENCODEURL関数が「%E7%B5%8C%E7%90%86%E5%87%A6%E7%90%86」に変換してくれます。これでサーバー側でも正しく受け取れますよ。

日本語を含むURLを直接 WEBSERVICE に渡すと、サーバーによっては文字化けや400エラーになることがあります。日本語が絡むときは必ず ENCODEURL を通すのがセオリーです。

詳しくは ExcelのENCODEURL関数の使い方 を参考にしてください。

為替レート取得の定番パターン

Excelで為替レートを自動取得するパターンもよく使われます。無料の為替APIを使った例です。

セル内容
A1USD
A2JPY
B1=FILTERXML(WEBSERVICE("https://www.floatrates.com/daily/" & LOWER(A1) & ".xml"), "//item[targetCurrency='" & A2 & "']/exchangeRate")

これで「1USD=何JPY」の為替レートが取れますよ。

セルの値を変えれば他の通貨ペアにも対応できるので、為替計算シートのテンプレートとして使いやすいですね。

NOTE

WEBSERVICE関数は、シートを開くたびや再計算のたびにAPIへアクセスします。リクエスト頻度に制限のあるAPIでは、意図せず制限に引っかかる可能性があるので注意してくださいね。

WEBSERVICE関数が廃止扱いになった背景と現状

2019年12月以降のMicrosoft 365では、WEBSERVICE関数が廃止扱い(deprecated)になっています。ここは実務で必ず知っておきたいポイントですよ。

廃止扱いの具体的な挙動

「廃止扱い」と聞くと「もう使えないの?」と思うかもしれませんが、実際の挙動はもう少し複雑です。

状況挙動
既存ファイルに書かれたWEBSERVICE関数そのまま動作する(計算される)
新規ファイルで入力関数名が認識されず #NAME? エラーになる場合がある
組織ポリシーでブロック管理者が無効化している場合は使えない

つまり、過去に作ったファイルは動くが、新規に作るファイルでは使えないというのが基本的な状況です。

Excel 2013〜2021(パッケージ版)やMac版では今でも普通に使えるので、Microsoft 365限定の話ですよ。

廃止された理由

Microsoftが WEBSERVICE 関数を廃止扱いにした理由は、大きく2つあります。

  1. セキュリティ上の懸念: 悪意のあるURLをセルに埋め込む攻撃ベクトルになりうる
  2. 代替手段の成熟: Power Query が標準搭載され、より安全で高機能なデータ取得が可能になった

要するに、「セキュリティリスクが高く、もっと良い代替手段があるから引退させる」という判断ですね。

実務での推奨方針

これから新しく作る業務ファイルでは、WEBSERVICE関数よりもPower Queryを使うのがおすすめです。

ただし、次のようなケースでは引き続きWEBSERVICE関数が有効ですよ。

  • 過去に作った既存ファイルのメンテナンス
  • Excel 2016/2019/2021のパッケージ版を使っている環境
  • シンプルなRSS取得など軽い用途
  • 学習目的やプロトタイピング

仕事で長期運用するシートなら、次のセクションで紹介するPower Queryへの移行を検討してくださいね。

WEBSERVICE関数の代替手段

WEBSERVICE関数の代わりとして、Excelには複数の選択肢があります。用途に応じて使い分けましょう。

Power Queryを使う方法

一番おすすめなのが Power Query(データ > データの取得)です。Microsoft 365・Excel 2016以降に標準搭載されています。

Power Queryには、次のようなメリットがありますよ。

  • JSON・XML・CSV・HTMLなど多様な形式に対応
  • 認証付きAPIに対応(OAuth・Basic認証など)
  • 32,767文字制限なし
  • データ整形(列追加・フィルタ・結合)まで一貫して処理できる
  • 定期更新のスケジュール設定が可能

手順は「データ」タブ →「データの取得」→「Webから」→ URLを入力、という流れです。GUIで操作できるので、関数を書くより直感的ですよ。

データ型「株価・地理」機能を使う

Microsoft 365には「株価」「地理」というデータ型機能があります。リンクされたデータ型とも呼ばれます。

データ型取得できる情報
株価株価、時価総額、為替レート、変化率など
地理人口、首都、GDP、通貨、タイムゾーンなど

使い方は簡単で、セルに「USD/JPY」と入れて「データ > 株価」を選ぶだけ。Excelが自動でデータを引き込んできますよ。

株価や為替レートだけなら、WEBSERVICE関数よりもこちらの方が手軽で安全です。

VBAのXMLHTTPを使う方法

より高度な制御が必要なら、VBAの MSXML2.XMLHTTP を使う方法もあります。Excelのマクロから直接HTTPリクエストを投げられますよ。

Sub getApiData()
    '--- 変数宣言 ---
    Dim http As Object
    Dim url As String

    '--- 取得先URL ---
    url = "https://api.example.com/data.xml"

    '--- HTTPリクエスト送信 ---
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.send

    '--- 結果をセルに書き込み ---
    Range("A1").Value = http.responseText
End Sub

認証ヘッダーの追加や、POSTリクエストの送信、長大なレスポンスの処理など、WEBSERVICE関数ではできない処理が可能ですよ。

ただしVBAはマクロ有効ブック(.xlsm)が必要で、組織によってはマクロブロックがかかっています。Power Queryが使えるならPower Queryを優先するのが無難ですね。

WEBSERVICE関数でよくあるエラーと対処法

実際にWEBSERVICE関数を使うと、エラーに遭遇することがあります。原因と対処法を表でまとめておきますね。

エラー/症状原因対処法
#VALUE!URLがHTTP/HTTPS以外、または不正な形式httpsで始まる正しいURLを指定する
#VALUE!サーバーが200以外のHTTPステータスを返したURLをブラウザで開いて動作確認する
#VALUE!タイムアウト(30秒以上応答なし)APIの応答速度を確認する、キャッシュを検討
#N/AExcel for the web・Mobileで実行しているデスクトップ版Excelで開く
#NAME?Microsoft 365で新規ファイル利用(廃止扱い)Power Queryなど代替手段を使う
文字化け日本語URLを直接指定しているENCODEURL関数でエンコードする
結果が切れる32,767文字の上限を超えているPower QueryかVBAで取得する

#VALUE!エラーの原因と対処

一番多いのが #VALUE! エラーです。主な原因は3つあります。

パターン1: URLの形式が不正

=WEBSERVICE("example.com/data.xml")

https:// のようなスキームが抜けていると #VALUE! になります。必ず https://http:// から始まるフルURLを指定してくださいね。

パターン2: サーバーが4xx・5xx応答を返した

URL自体は正しくても、サーバー側で認証エラー(401)やNotFound(404)を返すと #VALUE! が返ります。

まずはブラウザで同じURLを開き、画面が正しく表示されるかを確認しましょう。ブラウザで見られないURLはWEBSERVICE関数でも取得できません。

パターン3: タイムアウト

WEBSERVICE関数には30秒程度のタイムアウトがあります。応答の遅いサーバーではタイムアウトでエラーになりますよ。

#NAME?エラーの原因と対処

Microsoft 365で新規ファイルに入力したときに #NAME? エラーになったら、これが 廃止扱いの影響です。

=WEBSERVICE("https://example.com")

Excelが「この関数は知らない」と判断してエラーを返してきます。この場合は Power Queryを使うしかありません

古いExcelファイル(.xls形式、2019年より前に作ったファイル)で開き直せば動く場合もありますが、基本は代替手段に移行するのがおすすめです。

文字化けや日本語URLの対処

URLに日本語や記号が含まれるとき、ENCODEURL関数を通さないと文字化けしますよ。

# 誤った書き方
=WEBSERVICE("https://api.example.com/search?q=経理処理")

# 正しい書き方
=WEBSERVICE("https://api.example.com/search?q=" & ENCODEURL("経理処理"))

ENCODEURL関数は日本語・記号・スペースなどを「%XX」形式に変換してくれます。URLに変動する値を埋め込むときは必ずENCODEURLを通すと覚えておきましょう。

WEBSERVICE・FILTERXML・ENCODEURLの3点セット連携

最後に、Web関数3点セットの定番パターンをまとめておきますね。この形をテンプレとして覚えると、応用範囲がグッと広がりますよ。

基本テンプレート

=FILTERXML(WEBSERVICE(ENCODEURL(URL)), "XPath")

処理の流れはこうです。

  1. ENCODEURLでURLを安全な形式にエンコード
  2. WEBSERVICEでエンコード済みURLにアクセスしてXMLを取得
  3. FILTERXMLでXPathを使って必要な要素を抜き出す

それぞれの関数の役割を分担することで、どんなWebデータでも扱える万能パターンになります。

実務での使い分け早見表

やりたいこと使う関数
URLでWebデータを丸ごと取得したいWEBSERVICE のみ
取得したXMLから一部だけ抜き出したいWEBSERVICE + FILTERXML
URLに日本語・記号を含める必要があるENCODEURL を追加
JSON形式のAPIを使いたいPower Query(WEBSERVICEはJSON非対応)
認証付きAPIを使いたいPower Query または VBA
32,767文字を超える大量データPower Query または VBA

WEBSERVICE関数が得意なのは「公開されているシンプルなXML/RSSデータの取得」です。JSONや認証付きAPI、大量データはPower Queryに任せるのが賢い使い分けですよ。

まとめ|ExcelのWEBSERVICE関数は用途を見極めて使おう

ExcelのWEBSERVICE関数の使い方を、基本から応用まで一通り紹介してきました。要点をおさらいしておきますね。

  • WEBSERVICE関数は URLを指定してWebからデータを取得する Web関数
  • 構文は =WEBSERVICE(URL)。引数はURL1つだけとシンプル
  • 戻り値は生の文字列データ。最大32,767文字まで
  • HTTP/HTTPSのみ対応。FTP・認証付きAPIは不可
  • Excel 2013以降のデスクトップ版で利用可能。Webブラウザ版・Mobile版は非対応
  • Microsoft 365では2019年12月以降、新規ファイルでの利用が廃止扱い
  • FILTERXML・ENCODEURLとセットで使うのが定番パターン
  • 新規の業務ファイルでは Power Query や データ型機能 の利用が推奨

「URLでデータを取れる時代は終わりつつある」と捉えて、既存ファイルのメンテナンスではWEBSERVICE、新規ではPower Queryと使い分けるのが実務的な判断ですよ。

Web関数を使いこなせると、Excelの活用シーンがグッと広がります。下の関連記事もあわせて読んで、Excelのデータ連携スキルを高めてみてくださいね。

Webデータを自在に扱えるビジネスパーソンを目指していきましょうね。

タイトルとURLをコピーしました