Excelには、API等のWEBサービスからデータを取得する「WEBSERVICE関数」、取得したXML形式のデータから必要な値を抽出する「FILTERXML 関数」があります。
国税庁の法人番号公表サイトにある「法人番号システム Web-API」を事例に、Excelで指定した法人名の法人番号や市区町村を取得する方法です。
なお、Web 用 Excel および Excel for Macには対応しておらず、2013 Excel以降でないと今回の方法では取得できない見込です。以下、使用のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2311)です。
内容:
アウトプットイメージ
入力した企業名について、「法人番号システム Web-API」から法人名、法人番号、市区町村を数式で抽出しています。
事例のデータ抽出をする前提
他のXML形式のデータが取得できるサービスであれば事例と同様の考え方でデータ抽出できます。
なお、事例の「法人番号システム Web-API」は、誰でも利用できますが、「Web-API機能利用規約」の同意と、国税庁適格請求書発行事業者公表サイトから、アプリケーションIDの発行手続が必要です。詳細は以下でご確認ください。
事例のデータ抽出手順と説明
使用する関数
使用する関数は以下の3つと、文字列の結合です。
- 日本語の文字をURLで使用できる文字に変換
(前述アウトプットイメージでは、B3で使用)
詳細: ENCODEURL 関数 - Microsoft サポート - 生成したURLでWEBサービスからデータ取得
(前述アウトプットイメージでは、B5で使用)
詳細: WEBSERVICE 関数 - Microsoft サポート - 指定された xpath を使用して XML コンテンツから特定のデータを取得
(前述アウトプットイメージでは、B6、B7、B8で使用)
詳細: FILTERXML 関数 - Microsoft サポート
文字列の結合は、前述アウトプットイメージのB4で使用しています。このAPI用URLを作成するときに、「法人番号システム Web-API」ではアプリケーションIDが必要となるため、事前に発行手続きが必要です。
抽出手順
- 利用するWEBサービスの仕様にもとづいて、URLを作成します。
アウトプットイメージで、B2、B3、B4に該当する箇所です。事例の「法人番号システム Web-API」の場合は、以下がURLの仕様に該当する部分です。
国税庁法人番号公表サイトにある「Web-API(Ver.4.0)のリクエストの設定方法及び提供データの内容について」のP16(4. 法人名を指定して情報を取得する機能について 4.3. リクエスト例と応答結果のサンプル ⑶ ケース 12 ファイル形式を XML と指定する場合) - WEBSERVICE 関数でXML形式のデータを取得します。
アウトプットイメージで、B5に該当する箇所です。 - 取得したXML形式のデータから、 FILTERXML関数を使用して、データ抽出します。
事例の注意点
前述のアウトプットイメージの使用方法の場合、一致する法人名が複数ある場合はB6等で「#スピル!」のエラーが発生します。
FILTERXML関数に合致するデータが複数存在する場合は、縦方向にデータ抽出され、すでにあるセルと競合するためです。
・行列を反転して、縦方向に空欄を設ける
・xpathの指定方法を変更し、一致するデータを一つに絞る
などの修正が必要です。
また、WEBSERVICE関数は次の制限がありますので、取得できるデータの内容によってはエラーが発生します。
- 引数がデータを返できない場合、WEBSERVICE はデータを#VALUE。 エラーが表示されます。
- 引数の結果に無効な文字列、または許容されるセル制限である 32767 文字を超える文字列が含まれる場合、WEBSERVICE は値を返#VALUE。 エラーが表示されます。
- URL が GET 要求に対して許可されている 2048 文字を超える文字列である場合、WEBSERVICE は次の#VALUE! エラーが表示されます。
- サポートされていないプロトコル (ftp:// や file://など)の場合、WEBSERVICE は #VALUE! が返されます。
以上、ExcelのWEBSERVICE関数でXML形式のデータを取得してデータ抽出する事例でした。