- 締切済み
アクセスでウェブ上のデータを半自動的に取り込みたいのですが
今まで、気象データの集計をするのに、特定のウェブ上で参照したい年月日を入力して、その日の時毎データの頁を開き、データ表をマウスで範囲を指定してコピーし、エクセルに貼り付けて、そのデータを用いて集計を行っておりました。 しかし、上記の方法ですといちいち年月日の指定→画面の表示後必要箇所をコピー→エクセルに戻って貼り付け→ウェブに行って次の日の指定→と繰り返し作業が面倒です。 そこで、アクセスのフォームで取り込みたい年月日の範囲を指定することで、参照元のウェブから、特定範囲のデータを次々にコピーして、テーブルに各データを格納できるマクロを作成できないかと考えました。 所有バージョンはアクセス2002です。 今まではエクセルをよく使っており、簡易的なデータベースとしてもエクセルで済ませていましたが、データが蓄積すると処理に時間がかかるようになりましたので、アクセスを使った方がいいかなと考えます。 クエリーをとりあえず構成できるようになったのは2日前からです。モジュールは全く作ったことがありません。 よろしくご教示下さいますよう、お願い申し上げます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- GuruGuru22
- ベストアンサー率51% (177/346)
ほんじゃ、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を取得することもできます。 必要に応じて使い分けてください。
- GuruGuru22
- ベストアンサー率51% (177/346)
可能ですが、 >モジュールは全く作ったことがありません。 というレベルでは、先が長そうです。 処理は大雑把に考えて (1)フォームで指定した日付をプログラム(VBA)に渡す。 (2)(1)の値を参照して、InternetExplorerコントロールで 指定URLからデータを取得。 (3)(2)で取得したデータから必要部分を抜き出す。 (4)抜き出したデータをテーブルに追加。 てな感じですが、それに伴い、以下のような ことを大雑把にでも理解しておく必要があります。 (1)Accessのフォームに関する知識。 (2)InternetExplorerコントロールに関する知識。 (3)文字列操作に関する知識。 (4)ADOもしくはDAOといったデータベース操作に関する知識。 まぁ、少しずつ学んでいって、具体的にわからない所が でてきたら、質問してけばよいかと思います。
補足
アドバイスありがとうございました。 報告が遅くなり申し訳ありません。 あれから勉強し、知識(1),(3)をある程度理解できました。また、処理(1)も概ね可能なレベルになりました。 つきましては、処理(2)の方法についてご回答賜りたく思います。11/28で本質問を締め切りたく思います。 よろしくご教示のほどお願い申し上げます。
お礼
再度ありがとうございます。 サンプルとして作成していただいたものを参考に、取り込みたいURLと文字列を変更したところ、とりあえずメッセージボックスに表示することができました。 ご教示いただいた内容をとっかかりにして、勉強することができます。