Excelの関数でWeb上のデータを取り込みたい時、最初に候補へ上がりやすいのがWEBSERVICE関数です。
実際、株価や天気、社内APIの戻り値などをExcelへ直接読み込みたい場面では便利そうに見えます。
ただし、実際に使用してみると
「Macで動かない」
「Excel for the webでは使えない」
「JSONはそのままでは扱いにくい」
といった落とし穴もあります。
Microsoft公式でも、WEBSERVICE関数はExcel for Microsoft 365などで案内されている一方、Windowsの機能に依存しており、Macでは結果を返さないとされています。さらに、関連するENCODEURL関数とFILTERXML関数も、Excel for the webやMacでは利用できない制限があります。
この記事では、Excel Microsoft 365でWEBSERVICE関数を使う基本手順、できること、よくあるエラー、実務で使う時の注意点についてまとめています。
WEBSERVICE関数とは
WEBSERVICE関数は、指定したURLへアクセスし、その応答データをセルへ取り込む関数です。Microsoft公式では「インターネットまたはイントラネット上のWebサービスからデータを返す関数」と案内されています。
書式は次のとおりです。
=WEBSERVICE(url)
url には、取得したいWebサービスのURLを指定します。
たとえば、社内システムや公開APIがXML形式やテキスト形式のデータを返す場合、その内容をセルへ直接読み込めます。単純な確認であれば、まずは1セルにWEBSERVICE関数を入れて、戻り値が取得できるかを見るのが基本です。
WEBSERVICE関数が使える環境
WEBSERVICE関数は、使える環境を先に確認しておくことが大切です。ここを見落とすと、式が正しくても動きません。
| 項目 | 対応状況 |
|---|---|
| Excel for Microsoft 365(Windows) | 利用可能 |
| Excel 2024 / 2021 / 2019 / 2016(Windows) | 利用可能 |
| Excel for Mac | 関数一覧に出ても結果は返らない |
| Excel for the web | 実用不可 |
| 社内イントラネットのWebサービス | 利用可能な場合あり |
Microsoft公式では、WEBSERVICE関数はWindowsの機能に依存しており、Macでは結果を返さないとされています。ENCODEURL関数とFILTERXML関数も、Excel for the webやMacでは使えない制限があります。
Excel Microsoft 365でWEBSERVICE関数を使う手順
1. 取得したいURLを確認する
まず、ブラウザで開けるURLや、社内APIのURLを用意します。
例として、APIが次のような文字列を返すケースを考えます。
https://example.com/api/data.xml
このURLへアクセスした時に、XMLやテキストが返ることを確認しておくと失敗しにくいです。
2. セルにWEBSERVICE関数を入力する
任意のセルへ、次のように入力します。
=WEBSERVICE(“https://example.com/api/data.xml“)
これで、URLの応答がセルへ返ります。

3. URLに日本語や空白がある場合はENCODEURL関数を使う
URLの文字列に空白や日本語が含まれる場合、そのままでは失敗しやすいです。Microsoft公式でも、WEBSERVICE関数へ渡す前にURLをエンコードすることが推奨されています。
たとえば、A1セルに検索語を入れているなら、次のように書けます。
=WEBSERVICE(“https://example.com/api/search?q=”&ENCODEURL(A1))
これで、検索語を安全にURLへ含めやすくなります。
WEBSERVICE関数の実用例
XMLデータを取得する例
WEBSERVICE関数は、XML形式のデータと相性が良いです。
=WEBSERVICE(“https://example.com/sample.xml“)
この式だけでもXML文字列全体を取得できます。
FILTERXML関数と組み合わせる例
XMLの中から必要な値だけを抜き出したい時は、FILTERXML関数を使います。Microsoft公式でも、WEBSERVICE関数とFILTERXML関数を組み合わせる例が紹介されています。
たとえば、B1セルでXMLを取得し、B2セルで特定ノードを抜き出すなら次のように書けます。
B1セル
=WEBSERVICE(“https://example.com/sample.xml“)
B2セル
=FILTERXML(B1,”//price”)
この形なら、XML全体ではなく必要な値だけ表示できます。
WEBSERVICE関数は、外部データをExcelへ取り込む場面で活用できます。たとえば株価のように定期的に確認したい情報を自動取得したい場合は、次の記事を参考にしてください。

WEBSERVICE関数を使う時の注意点
JSON APIはそのままだと扱いにくい
WEBSERVICE関数自体は文字列を返せますが、Excel標準関数だけでJSONをきれいに分解するのは簡単ではありません。
そのため、WEBSERVICE関数はXMLを返すAPIや、単純なテキストを返すURLのほうが扱いやすいです。JSONを本格的に使うなら、Power QueryやVBA、Office Scriptsのほうが向いています。
URLが長すぎるとエラーになる
Microsoft公式では、GET要求として許可されるURL文字列は2048文字までで、これを超えると #VALUE! エラーになるとされています。
検索条件をつなぎ過ぎると詰まりやすいので、URLはできるだけ短く整理してください。
返却文字数にも上限がある
WEBSERVICE関数は、戻り値がセル上限の32767文字を超える場合も #VALUE! エラーになります。大きいレスポンスを返すAPIには向きません。
WEBSERVICE関数で#VALUE!エラーが出る主な原因
| 原因 | 内容 |
|---|---|
| URLが無効 | URLの記述ミス、パラメータ不足 |
| URLが長すぎる | 2048文字超でエラー |
| 戻り値が長すぎる | 32767文字超でエラー |
| 対応外プロトコル | ftp:// や file:// は不可 |
| Macで実行している | Windows依存のため結果が返らない |
| API側で制限されている | 認証必須、アクセス拒否など |
Microsoft公式では、無効な文字列、長すぎるURL、長すぎる戻り値、非対応プロトコルでは #VALUE! エラーになると案内されています。
WEBSERVICE関数が向いているケース
社内APIの簡易確認
開発部門や運用部門で、APIの戻り値をExcel上ですぐ確認したい時に便利です。
更新情報の取得
XMLで公開されている更新情報やデータ一覧を確認する用途にも使いやすいです。
小規模なデータ取得
定期的に少量のデータを取り込む用途なら、関数だけで完結しやすいです。
よくある質問(Q & A)
- Excel Microsoft 365なら必ずWEBSERVICE関数は使えますか?
-
いいえ。Windows版Excelでは使えますが、Macでは結果を返さないとMicrosoft公式で案内されています。Excel for the webでも実用的には使えません。
- WEBSERVICE関数でJSONを取得できますか?
-
取得自体はできますが、JSONをExcel関数だけで分解するのは扱いにくいです。XMLのほうがFILTERXML関数と組み合わせやすく、実務では使いやすいです。
- URLに日本語が入る場合はどうすればいいですか?
-
ENCODEURL関数でエンコードしてからWEBSERVICE関数へ渡します。Microsoft公式でもこの使い方が案内されています。
まとめ
Excel Microsoft 365でWEBSERVICE関数を使うと、Webサービスのデータをセルへ直接取り込めます。特にWindows版Excelで、XMLや短いテキストを取得したい時には便利です。
ただし、Macでは結果を返さないこと、Excel for the webでは使いにくいこと、JSONの分解は苦手なこと、#VALUE! エラーになりやすい条件があることは先に押さえておくべきです。
まずは WEBSERVICE(url) で応答を確認し、必要に応じてENCODEURL関数やFILTERXML関数を組み合わせる形で使うと失敗しにくいです。単純な取得なら十分便利ですが、複雑なAPI連携まで考えるならPower Queryなど別手段も検討すると実務では安定します。



