dポイントプレゼントキャンペーン実施中!

初心者ですが宜しくお願いいたします。
環境:EXCEL 2007

簡単な情報を取得してシートに入れていきたいと思っています。
参考サイトを拝見し以下のコードを見つけました。

Sub test()
Dim oHttp As Object
Set oHttp = CreateObject("MSXML2.XMLHTTP")
oHttp.Open "GET", "取得サイトのURL", False
oHttp.Send
Debug.Print oHttp.responseText
End Sub

試しに天気予報から今日の天気を取得しようと思い、
http://weather.yahoo.co.jp/weather/jp/27/6200.html のサイトからHTMLを取得し、
イミディエイトウィンドウで "今日の天気" の語句を検索しましたが、見つかりませんでした。

他のサイトでも試してみましたが、必要な情報がHTMLに含まれていないようです。
切り出したい文字列が見つからないのは、取得方法に何か問題があるのでしょうか?

素人質問で本当に申し訳なく思います。
何か参考になるサイトや参考書等でもかまいませんので、
お知恵を貸していただけると助かります。

宜しくお願いいたします。

A 回答 (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.ht … 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)とか表示文字数を減らしたり】
して、テストの方法を試行錯誤することが大事だと思います。
 
頑張って【初心者】を脱出してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
なるほど。イミディエイトウィンドウには表示される文字数に制限があったのですね。基本は大事だと痛感いたしました。
jcctaira様の言われるように基本をもっと学び、自分の中でしっかりとしたテスト環境を構築できるようにしたいと思います。
仕事でたまに使う程度の知識から始めたVBAのため、本当に基本がなってません。早く初心者から抜け出したいですが・・・
先はまだまだ長そうです。これからも質問することはあると思いますが、見つけた時はお叱り、助言いただけたらと思います。本当にありがとうございました。

お礼日時:2012/05/08 19:28

まず、自分で検証しませんか?



取得した内容すべてを、テキストなり、HTML文で、出力してください。

どうですか、サイトのソースと同じですか?

それから質問しましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
基本ができていないため、比較方法もサイトソースとイミディエイトウィンドウを比べる程度でした。
きちんとテストできるようにしっかり基本を学びたいと思います。

お礼日時:2012/05/08 19:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!