Office関連

Excel 2013で追加された「WEBSERVICE」関数を使って、マクロを使わずWeb APIを利用する。

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! が返されます。

WEBSERVICE 関数より

■ 関連Webページ

・[Excel 2013]Web関数を使ってマッシュアップ
https://www.ka-net.org/blog/?p=2462
・[Excel 2013]Web関数を使ってXMLデータから複数のレコードをまとめて抽出する。
https://www.ka-net.org/blog/?p=3266

Office 2013 Consumer Preview(カスタマー プレビュー)をインストールしてみました。前のページ

Excel 2013版URLエンコードマクロ次のページ

関連記事

  1. Office関連

    Office 2016関連資料のリンク

    Office 2016関連資料のリンクをメモしておきます。特に「O…

  2. Office アドイン

    [Office用アプリ]「ActiveViewChanged」イベントと「getActiveView…

    v1.1で追加された、ビューが変更された時に発生するイベント「Acti…

  3. Office アドイン

    [Office用アプリ]選択範囲変更時のイベントを利用する。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

コメント

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP