• 締切済み

アクセスでウェブ上のデータを半自動的に取り込みたいのですが

 今まで、気象データの集計をするのに、特定のウェブ上で参照したい年月日を入力して、その日の時毎データの頁を開き、データ表をマウスで範囲を指定してコピーし、エクセルに貼り付けて、そのデータを用いて集計を行っておりました。  しかし、上記の方法ですといちいち年月日の指定→画面の表示後必要箇所をコピー→エクセルに戻って貼り付け→ウェブに行って次の日の指定→と繰り返し作業が面倒です。  そこで、アクセスのフォームで取り込みたい年月日の範囲を指定することで、参照元のウェブから、特定範囲のデータを次々にコピーして、テーブルに各データを格納できるマクロを作成できないかと考えました。 所有バージョンはアクセス2002です。  今まではエクセルをよく使っており、簡易的なデータベースとしてもエクセルで済ませていましたが、データが蓄積すると処理に時間がかかるようになりましたので、アクセスを使った方がいいかなと考えます。  クエリーをとりあえず構成できるようになったのは2日前からです。モジュールは全く作ったことがありません。  よろしくご教示下さいますよう、お願い申し上げます。

みんなの回答

回答No.2

ほんじゃ、ok、gooどちらからアクセスしてるか しりませんが、「教えて!goo」のトップページに 出る質問タイトル3つを取得する例。 VBEの[ツール]→[参照]でMicrosoft Internet Controls に チェックを入れてください。 Sub test()   Dim ie As New InternetExplorer   Dim mylines As Variant   Dim qlines As Variant      '指定URLに接続   ie.Navigate ("http://oshiete.goo.ne.jp/jsp/oshiete_top.jsp")   '読み終わるまで待つ   Do Until ie.ReadyState = READYSTATE_COMPLETE     DoEvents   Loop   '読み込んだテキストを改行で分割   mylines = Split(ie.Document.body.innertext, vbCrLf)   '"Q."を含む文字列抽出   qlines = Filter(mylines, "Q.")   'メッセージボックス表示   MsgBox (qlines(0) & vbCrLf & qlines(1) & vbCrLf & qlines(2))   'IE終了   ie.Quit End Sub 上記例ではinnertextを使ってますが、 innerhtmlでHTMLを取得することもできます。 必要に応じて使い分けてください。

zinchan
質問者

お礼

 再度ありがとうございます。  サンプルとして作成していただいたものを参考に、取り込みたいURLと文字列を変更したところ、とりあえずメッセージボックスに表示することができました。  ご教示いただいた内容をとっかかりにして、勉強することができます。

回答No.1

可能ですが、 >モジュールは全く作ったことがありません。 というレベルでは、先が長そうです。 処理は大雑把に考えて (1)フォームで指定した日付をプログラム(VBA)に渡す。 (2)(1)の値を参照して、InternetExplorerコントロールで   指定URLからデータを取得。 (3)(2)で取得したデータから必要部分を抜き出す。 (4)抜き出したデータをテーブルに追加。 てな感じですが、それに伴い、以下のような ことを大雑把にでも理解しておく必要があります。 (1)Accessのフォームに関する知識。 (2)InternetExplorerコントロールに関する知識。 (3)文字列操作に関する知識。 (4)ADOもしくはDAOといったデータベース操作に関する知識。 まぁ、少しずつ学んでいって、具体的にわからない所が でてきたら、質問してけばよいかと思います。

zinchan
質問者

補足

 アドバイスありがとうございました。  報告が遅くなり申し訳ありません。  あれから勉強し、知識(1),(3)をある程度理解できました。また、処理(1)も概ね可能なレベルになりました。  つきましては、処理(2)の方法についてご回答賜りたく思います。11/28で本質問を締め切りたく思います。  よろしくご教示のほどお願い申し上げます。

関連するQ&A