• ベストアンサー

マクロでyahooのフォームをサブミット、ソースから単語検索

お願い致します。 エクセルマクロ(VBA)を使い、IEでyahoo.co.jpのページを立ち上げ、 用意してある検索文字列をフォームにセットしフォームをサブミット、 検索結果ページのhtmlソースを取得し、 そのソースに"ListRow"という文字列が何回出現するかを 戻り値として受け取り、エクセル表上に出力したいです。 1つできれば用意する文字列を増やしてループを回してそれぞれの場合の出現回数を表示します。 特に、ブラウザの立ち上げからフォームに値をセットしてサブミットまではやったことがあるので、結果ページのhtmlを取得するところを知りたいです。できればそのソースに"ListRow"という文字列が何度出現するかのロジックも・・・ よろしくお願い致します。m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >そのソースに"ListRow"という文字列が何回出現するかを >戻り値として受け取り、エクセル表上に出力したいです。 buf = objIE.Document.body.innerHTML '(または、.Document.Body.InnerText) '取得した buf に、 tmp = Replace(buf,"ListRow","") ''大文字小文字が関係ないなら、Replace(buf, "ListRow", "", , , 1) n = (Len(buf) - Len(tmp))/Len("ListRow") として、出てくるはずです。 なお、言うまでもなく、 objIEは、 Set objIE = CreateObject("InternetExplorer.Application") のことで、インターネットに、URLでアクセスしてからの話ですから、必要な項目は、検索でお調べください。

japan_3
質問者

お礼

なるほど、文字数を数えるのですか~!! 発想しだいですね。 ありがとうございました

その他の回答 (3)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

>Submit からWebソース取得の間に、結果ページ表示完了まで待つ、という 処理が必要になります。 コードは・・・・。 今手許にありません。 ネット検索したら簡単に見つかるかも。

japan_3
質問者

お礼

もし状況がビジーだったらというロジックを加えました。 ありがとうございました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

>できればそのソースに"ListRow"という文字列が何度出現するかのロジックも・・・ 試してないですが、取得したソースを >"ListRow" でSplitしたUboundを取得、でいけそうな気がします。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

ソース取得については↓が参考になると思います。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html