- ベストアンサー
VBA web情報取得(スクレイピング)について
- VBAを使用してweb情報を取得する方法について解説します。
- VBAを使ってwebから情報を取得し、Excelのシートにデータを入力する方法を紹介します。
- webサイトからHTMLを取得し、必要な情報を抽出する際に見つかりにくい場合、取得方法に問題がある可能性があります。参考になるサイトや参考書を探すことをおすすめします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
tokyo2199さん こんにちは。 以下のマクロでテストを行なって確認下さい。 「今日の天気」の文字はあると思います。 Sub test() Dim oHttp As Object Dim 文字位置 As Long Set oHttp = CreateObject("MSXML2.XMLHTTP") oHttp.Open "GET", "http://weather.yahoo.co.jp/weather/jp/27/6200.html", False oHttp.Send 文字位置 = InStr(oHttp.responseText, "今日の天気") Debug.Print 文字位置 Debug.Print Mid(oHttp.responseText, 文字位置, 1000) End Sub > 初心者ですが 基本をしっかり勉強してくださいね。 問題は「イミディエイトウィンドウ」には表示される文字数には【限界】があります。 よって、今回Debug.Print oHttp.responseTextでHTMLを表示させていますが、文字数が 多いので、最初の方の文字が切れて表示されていません。 よって「今日の天気」の文字が見つけられなかったのだと思います。 初心者を脱却するには、人のプログラムを試すのも大事ですが、自分で色々工夫 【InStrとか命令を入れたり、 Debug.Print mid(oHttp.responseText,1000,1000)とか表示文字数を減らしたり】 して、テストの方法を試行錯誤することが大事だと思います。 頑張って【初心者】を脱出してください。
その他の回答 (1)
- lupin-333333
- ベストアンサー率31% (294/933)
まず、自分で検証しませんか? 取得した内容すべてを、テキストなり、HTML文で、出力してください。 どうですか、サイトのソースと同じですか? それから質問しましょう。
お礼
ありがとうございます。 基本ができていないため、比較方法もサイトソースとイミディエイトウィンドウを比べる程度でした。 きちんとテストできるようにしっかり基本を学びたいと思います。
お礼
ありがとうございます。 なるほど。イミディエイトウィンドウには表示される文字数に制限があったのですね。基本は大事だと痛感いたしました。 jcctaira様の言われるように基本をもっと学び、自分の中でしっかりとしたテスト環境を構築できるようにしたいと思います。 仕事でたまに使う程度の知識から始めたVBAのため、本当に基本がなってません。早く初心者から抜け出したいですが・・・ 先はまだまだ長そうです。これからも質問することはあると思いますが、見つけた時はお叱り、助言いただけたらと思います。本当にありがとうございました。