HTMLデータの取り込み

―Webクエリ―

 さて、それでは部下が発行してきたHTML形式の日報のデータをExcel 2000に取り込んでみましょう。Excel 97にも外部のデータを取り込むための「データベースクエリ」や「Webクエリ」といった機能が用意されていましたが、いまいち使い勝手が良くありませんでした。しかし、Excel 2000ではこの外部データの取り込み部分が大幅に強化され、実際の業務に使用することでかなりの作業の効率化が期待できそうです。
 先ほど作成した図8のような日報のうち、下の部分、当日の活動履歴を取り込みたいとします。Excel 2000において、「Webクエリ」は今回のようにHTML形式のファイルの1部分を指定して取り込むことも可能となりました。言葉だけ聞くと、Webの環境がないと使用できないように感じますが、取り込み元がHTMLファイルであれば、ローカルの環境でも使用することができます。まずはこのWebクエリの用途をざっと概括してみましょう。
 Webクエリを作成する手順は、Excel 2000のメニューから[データ]-[外部データの取りこみ]-[新しいWebクエリの作成]で設定画面を開きます。最初のアドレスを指定するダイアログに、普通にパスを指定する場合と同じく「¥¥BossPC¥日報¥星野日報.htm」などのように入力します(図9)。ローカルの場合は「D:¥日報¥星野日報.htm」でもOKです。次に、「必要なデータのあるWebページの部分」を設定します。今回は上からかぞえて2番目の活動履歴の表を取り込みたいので、「選択した表」にチェックをし、その下の「表名または数値を…」というテキストボックスには、2番目の表ということで「2」と入力しておきます。「保存するWebページの形式」は、データだけを取り込み、書式や色などは必要としない場合は「なし」を選択し、[OK]ボタンを押します。最後にデータを取り込む開始位置を指定してあげれば完了です。日報の活動履歴の部分が取り込まれたと思います。

図9:「新しいWebクエリの作成」で各設定をする

 Webクエリを使用すると、このような形でHTMLファイルの表からデータを取り込むことができるのです。さらに、HTMLファイル側で情報の更新があった場合、Excel 2000のメニューから[データ]-[データの更新]を選択すると、取り込まれる内容もHTMLファイルの変更が反映されたものになります。つまり、Webクエリを一度設定しておけば、あとはこの「更新」を行なうだけで、最新の情報を取り込むことが可能となるのです。最新の活動履歴を取り込んだり、最新の価格表を取り込んだりと、その用途はさまざまなものが考えられます。
 上記の一連のWebクエリの設定をコードで行なうと、以下のような形になります。

 Sub GetWEBData()
     With Sheets(1).QueryTables.Add( _
      Connection:="URL;¥¥BossPC¥日報¥増田.htm", _
      Destination:=Sheets(1).Range("A1"))
    ' 新しい「QueryTableオブジェクト」を作成する
    ' 取り込みたいHTMLファイルまでのパスと、
    ' 取り込みを開始する場所を設定
 
     .Name = "増田データ抽出"
     .WebSelectionType = xlSpecifiedTables
     .WebFormatting = xlWebFormattingNone
     .WebTables = "2"
     ' 各種の設定を行なう
     ' 上記では「2番目のテーブルからデータだけを抽出」という設定
 
      .Refresh BackgroundQuery:=False
     ' 設定に基づいてデータの取り込みを開始する
     End With
 End Sub
 Webクエリをはじめとする「外部データの取り込み」は、QueryTableオブジェクトで管理が行なわれています。QueryTableオブジェクトは設定の項目数が多く、すべてをコードから設定するのはかなり骨が折れる作業です。そのため、「マクロの自動記録」で記録を取りながら設定を行ない、記録されたコードに必要に応じて修正を加えていくのが、現実的な方法だと言えます。