Microsoft Office 2013が登場し、Excelにも新しい関数がいくつか追加されました。
その中でも私が特に注目したいのが「Web」関連の関数です。
「WEBSERVICE」「ENCODEURL」「FILTERXML」の3つの関数が追加され、これらの関数を使うと、Webサービス、つまり公開されているWeb APIをVBAでコードを書くことなく利用できるようになります。
まずは関数の説明から。
・ENCODEURL(文字列):URL にエンコードされた文字列を返します。
・FILTERXML(xml,xpath):指定された XPath に従って、XML コンテンツの特定データを返します。
・WEBSERVICE(url):Web サービスからデータを返します。
使い方としては、ENCODEURL関数でエンコードしたクエリ文字列を、WEBSERVICE関数で指定したURLに渡し、結果として得られるXMLからFILTERXML関数を使って任意の値を取得する(値はXPath式で指定)、という流れになります。
例えば、SimpleAPI「WikipediaAPI」を利用してWikipediaの記事内容を取得する場合は下記のようになります。
セルA1:キーワードを入力
セルA2:
セルA2の式では上記の説明通り、APIのリクエスト先URL[http://wikipedia.simpleapi.net/api?output=xml&keyword=]に対して、ENCODEURL関数でエンコードしたクエリ文字列をWEBSERVICE関数で渡し、結果として得られるXMLから、目的となるデータ(body要素の値)をFILTERXML関数を使って抽出しています。
これまでのExcelではWeb APIを利用するのにコーディングを必要としていましたが、今バージョンからはコードを書くことなくAPIを利用することができます(もちろん、より柔軟にAPIを利用したい場合は自分でコードを書く必要がありますが…)。
“Webの世界では広く利用されている、便利なWeb APIをExcelからコーディング不要で簡単に利用できる”
とても便利だと思いませんか?
ちなみに、郵便番号検索APIを利用すれば、下記のように郵便番号から住所を取得することもできます。
2012/07/27 追記:WEBSERVICE関数は下記のような注意事項もあるので記載しておきます。
2013/01/10 追記:注意事項を一部変更しました。
・引数がデータを返せない場合、エラー値 #VALUE! が返されます。
・引数が無効な文字列と判明した場合、または引数がセルの許容範囲である 32767 文字を超える文字列になった場合、エラー値 #VALUE! が返されます。
・URL の文字列が GET 要求の許容範囲である 2048 文字を超える場合、エラー値 #VALUE! が返されます。
・ftp:// または file:// などのサポートされていないプロトコルの場合、エラー値 #VALUE! が返されます。
■ 関連Webページ
・[Excel 2013]Web関数を使ってマッシュアップ
https://www.ka-net.org/blog/?p=2462
・[Excel 2013]Web関数を使ってXMLデータから複数のレコードをまとめて抽出する。
https://www.ka-net.org/blog/?p=3266
この記事へのコメントはありません。