はじめに

本連載では、Excel VBA(Visual Basic for Applications)を使ってできることを、トピックごとに紹介していきます。特に最近注目されている様々なWebサービスについて、Web API(Application Programming Interface)を経由して、Excelから利用する方法を多く取り上げる予定です。

第1回は、天気予報を取り上げます。外回りの営業、屋外で作業する職人、客足を予測して商品・素材の仕入計画を立てる店長、レジャーや旅行、大物の洗濯や大掃除をしたい人などにとって、この先の天気は気になりますよね。そこで、日本気象協会が提供する「tenki RSS」サービスを使って、Excel VBAから向こう1週間の天気予報を取得する方法を紹介します。

動作確認は、Windows 7、Excel 2010、VBA 7.0で行っていますが、今回のサンプルは、Windows XP、Excel 2007、VBA 6.5でも動作します。

図1 完成サンプル

「tenki RSS」サービスについて

tenki RSSとは、RSS 2.0フォーマットで天気情報などを配信する、日本気象協会のサービスです。詳しい説明は、「http://tenki.jp/webservice/rss/」を参照してください。RSS(RDF Site Summary)とは、Webサイトの情報をまとめたものです。RSSを購読することで、該当サイトの最新情報を取得できます。

対象地域に対応したRSSのURLの取得

tenki.jpのトップページにアクセスし、その右下にある「天気予報」から、情報を得たい地方(例:関東・甲信→東京→東京地方)を選択します。ブラウザのアドレスバーにあるURLをコピーしておいてください(この例では、http://rss.rssad.jp/rss/tenki/forecast/city_63.xml)。

図2 URLの取得

XML(eXtensible Markup Language)について

XMLとは、単純な文字列やデータに、階層や繰り返しなどの構造を示すマーク(タグ)を加えた言語です。この言語で書かれたXMLファイルは、表を少し複雑にしたもので、簡易なデータベースとしても利用することが可能です。 Web APIにおいて、XMLは重要な位置を占め、今回のRSSも、XML形式で取り込みますので、心に留めておきましょう。

向こう1週間の天気予報の作成手順

まず、Excelの操作でできる部分は手作業で行い、続いて、自動化する部分のみVBA化します。

手作業で行う部分の手順

手順1 Webサイトのデータ構造とExcelのテーブルとの関連付け
手順2 Webサイトのデータの読み込み
手順3 広告表示行の削除
手順4 日付、天気、気温の列の分割
手順5 表の項目名の修正
手順6 列幅の修正

手順1 Webサイトのデータ構造とExcelのテーブルとの関連付け

Excel 2010を起動したら、リボンから[開発]タブをクリックし、[XML]グループの[ソース]ボタンをクリックすると、右側に[XMLソース]ウィンドウが表示されます(図3)。

図3 [XMLソース]ウィンドウ

[XMLソース]ウィンドウの右下にある[XMLの対応付け]ボタンをクリックすると、図4のようなダイアログが開きますので、[追加]ボタンをクリックします。図5のようなダイアログが開きますので、下方の[ファイル名]欄に、前もってコピーしておいたURLを貼り付け、[開く]をクリックします。

図4 [XMLの対応付け]ダイアログ

図5 [XMLソースの選択]ダイアログ

「指定したXMLソースはスキーマを参照していません。」という警告が表示されますが、そのまま[OK]をクリックしてください。[XMLの対応付け]の表に1行追加(図6)されたことを確認して、[OK]ボタンをクリックすると、[XMLソース]ウィンドウにデータ項目が階層的に表示されます。

図6 [XML対応付け]ダイアログに1行追加されたところ

[XMLソース]ウィンドウの項目から、[rss]-[channel]-[item]配下にある[title]をワークシート上にドラッグ&ドロップします。この時点で、「テーブル1」という名前のテーブルができ、リボンは[デザイン]タブに切り替わって、上に[テーブルツール]と表示されています(図7)。

図7 [title]をワークシート上にドラッグしたところ

手順2 Webサイトのデータの読み込み

[外部のテーブルデータ]グループにある[更新]ボタンをクリックすると、図8のようにデータが読み込まれます。

図8 データが読み込まれたところ

手順3 広告表示行の削除

PRで始まる広告の行がありますので、これらを行削除します。

手順4 日付、天気、気温の列の分割

日付、天気、気温は、1列にまとまっていて見づらいので、スペースで区切られていることに着目して、3列に分けましょう。

データ領域を選択してから[データ]タブの[区切り位置]をクリックして、「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択し、「区切り文字」として「スペース」にチェックを入れます(図9)。データのプレビューで問題がなければ、[完了]をクリックします。

図9.データの区切り位置

手順5 表の項目名の修正

データが3列に分かれたら、項目名を設定します。

手順6 列幅の修正

さらに、列幅をデータに合わせて揃えておきます。 これで、図10のように、東京地方の向こう1週間の天気予報ができました。

図10 項目名を設定し終わったところ