Webサイトからデータを取り込む方法

Webサイトからのデータの取り込み

[外部データの取り込み]にある[Webクエリ]をクリックします。

[新しいWebクエリ]ウィンドウが表示されますので、上部にあるアドレス欄にURLを入力します。

ここではYahoo!ファイナンスの株式ランキングから取り込んでみることとします。

アドレスを入力したのち[移動]をクリックするとページの内容が表示されます。ここで取り込む範囲を指定します。

最後に[取り込み]ボタンをクリックすると、データの貼り付け先を問う[データのインポート]ダイアログが表示されます。

貼り付け先を指定して[OK]をクリックすると、指定範囲のデータがExcelのワークシート上に取り込まれます。

自動更新

なお[データのインポート]ダイアログの[プロパティ]から[コントロールの更新]の項目を設定することで、定期的に内容を自動で更新させることもできます。

取り込み条件の動的な変更

1つのページでURLのパラメータによって複数の情報を提供している場合、そのパラメータ部分だけを変更可能とすることでより多くの情報を簡単に取得できるようになります。

Webサイトから取り込んだデータを貼り付けたセルを右クリックして、[クエリの編集]を選択します。

[新しいWebクエリ]のウィンドウが表示されますので、[クエリの保存]ボタンをクリックしてクエリを外部のファイル (iqyファイル) に保存します。

iqy (Internet Inquiry File) ファイルの編集

保存したiqyファイルをメモ帳などのエディタで開きます。内容は次のようになります。

WEB
1
http://quoterank.yahoo.co.jp/ranking/search?mk=11&kd=1&ca=1&tm=day&b=1

Selection=13
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False

今回の例ではb=1の部分がランキングの順位を表しているため、ここを動的に変更できるようにしてみます。クエリパラメータの書式、

?SYMBOL=["パラメータ","表示メッセージ"]
Web クエリ パラメータ クエリを作成する - Microsoft Office Online

に従いb=1を、

b=["rank","順位を指定してください。"]

のように書き換えます。そしてファイルを保存します。

iqyファイルを使用した接続

[データ]タブの[接続]にある[接続]をクリックします。

[ブックの接続]ダイアログが表示されるので、[プロパティ]をクリックします。

[接続のプロパティ]ダイアログでは[定義]タブの[参照]ボタンから、先ほど保存したiqyファイルを開きます。

[OK]をクリックしてプロパティの設定を確定すると、先ほど設定した表示メッセージとともにパラメータの値の入力を求めるダイアログが表示されます。

このダイアログはデータの更新のたびに表示されるので、これでパラメータ部分だけを修正し取り込み条件を動的に変更できるようになります。

パラメータの値をセルから入力

取り込み条件のパラメータとしてワークシートのセルを参照させることで、複数のデータ取り込みを一括して変更できるようになります。

取り込んだデータを貼り付けたセルを右クリックして、[パラメータ]を選択します。

[パラメータ]ダイアログが表示されます。

[パラメータ値の取得先]で[次のセルから値を取得する]をチェックして、セルを選択します。これでパラメータの値として、このセルの値が使用されるようになります。

なおこのとき[セルの値が変わるときに自動的に更新する]にチェックを入れると、更新が自動で行われるようになるため便利です。

データ接続を無効にさせない方法

外部からデータを取り込む処理はセキュリティ上の問題とされ、ファイルを開いた時点ではデータが取り込まれないようになっています。

ですのでWebサイトからデータを取り込むように作成したExcelファイルも、ファイルを開き直すとそれらの機能がすべて無効とされてしまいます。


セキュリティの警告

警告の表示にあるオプションの設定からデータ接続を有効にできますが、ファイルを開くたびに設定を変更するのはひどく煩わしいです。そのようなときはファイルを信頼できる場所に置くことで、データ接続が無効にされないようにできます。