• ベストアンサー

マクロで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

関連するQ&A

  • エクセルVBAでwebのソースコードを検索&取得

    webページのソースコードを検索して、検索した文字列に続く3文字を取得したいです webページのソースコードが下記だと仮定します (ソースコード)   AAA   ABC***   BBB   CCCAAA ABC という文字列を検索して、***という変数を取得したいです ***の部分は毎回変わる、英数字のランダムな文字です 説明が下手で申し訳ありません どの様に取得すればよいかわかりません どうぞよろしくお願い申し上げます

  • YahooやGoogle検索を行いたい

    VBあるいはc#でYahooやGoogleに文字列を送り、その文字列に対する検索結果のページのURLや件数などを所得したいのです。 Yahooのデベロッパーネットワークを見てみたのですが、ドライブやメールにログインがどうのばかりで、検索自体の方法が分かりません。 できればブラウザを経由せず、直接文字列の形で取得したいのですが、可能でしょうか?

  • エクセルで検索フォームを作りたいです

    エクセルにはフォームを作る機能があると聞きました。 例えば、シート:「Sheet1」のA列からある番号を検索して、B列の文字を 表示するようなシートを作るにはどうすれば良いのでしょうか? 例えば、フォームに「1234」と入力した場合、入力した数値といっちするのが A15にあり、 この場合、B15にある文字列をフォームに表示させたいです。 言葉で説明するのも限界がありますので、フォームを作るにあたっておすすめのおすすめの サイトや本がありましたら教えてください。

  • サイト検索フォーム

    サイト内存在する文字と検索した文字が一致した場合表示させたいんですが、誰か教えてください。 一致条件の例 検索文字列「 ああ 」 検索結果「 漢字:嗚呼 読み仮名:ああ 」 検索文字列「 あ 」 検索結果「 漢字:嗚呼 読み仮名:ああ 」       「 漢字:生憎 読み仮名:あいにく 」...以下「あ」が含まれる物を表示 サイト内には上記のような漢字と読みの組み合わせをおいておき上部にフォームを設置し抽出したいのです。 宜しくお願いします。

  • エクセルのマクロで検索

    教えてください。 エクセルにいろいろなセルに文字列が並んでいます。 フォームを作成し、テキストに文字列1、文字列2を指定します。 そこからある文字列1を検索し、もし見つかればその見つかった文字列1の右のセルに指定した文字列2を挿入したいのです。右のセルに文字列3がすでにある場合はその文字列3の下のセルに文字列2を挿入します。 もしみつからなければ、Aの一番下のセルに文字列2を挿入します。 といったプログラムをコーディングしたいのですが、マクロに関しては初心者です。VBは少しなら分かります。 できれば分かりやすく教えて頂けないでしょうか。 よろしくお願いします。

  • VBA フォームに入力したものを検索しエクセルへ

    わたしはVBA初歩で現在勉強しているものです。 VBAでユーザフォームに検索窓を設置しました。 下記のことをできるようにしたいです。 (1)フォームの検索窓に文字を入力 (2)フォームのボタンを押す (3)googleで(1)の文字を検索(サイトはshowしなくてよい) (4)検索結果のすべてを   A列 番号   B列 タイトル   C列 URL というように順次流していく。 ↑このようなものを作りたいのですが、どのようなコード記述をすればよいでしょうか? 教えてください。 よろしくお願いいたします。

  • 検索フォームを自動で実行させたい

    お世話になります。 "prototype.jsでYouTubeをインクリメンタルサーチ"というタイトルのページにて、入力フォームにワードを打ち込むとそのワードのyoutube動画を検索表示させる、という内容の記事がありまして、そちらのサンプルソースを試してみました。 参考URL http://www.atmarkit.co.jp/fwcr/rensai/ajaxrecipe02/ajaxrecipe02_1.html 上記のプログラムを試してみると、HTMLページに検索フォームが設けられており、そこにワードを打ちこんでみると、該当javascriptが1文字打ち込むごとにYoutubeから検索結果を拾って、検索フォームの下スペースに動画リストとして表示してくれました。無事に動いてくれたのでこのサンプルコードに少しカスタマイズをしてみたのですが、ここで躓いてしまいました。。 入力フォームにvalue="animal"として、検索ページが表示されると自動でanimalの検索結果を表示させたいと思ったです。 ですが、実際にはフォームエリアにはanimalと表示されていますが、検索アクションがされない状態です。 私はjavascriptなど勉強中の初心者なので調べてみているのですが、これを自動で表示させるには、form部分にonChange="○○○"、javascript側にwindow.onload = function(){ ○○○();}というものを使えばできるような感じでしたが、どうにもうまく動きません。 もしご教授頂けるという方がいらっしゃったら是非お願いしたいです。宜しくお願いいたします。

  • 昔の検索フォームに戻せませんか?

    久しぶりにパソコンを開いたら、以前の検索フォームがなくなり非常に使いづらくなっていました。 以前は、yahooでも、googleでも、パソコンを開くとオープン画面が検索フォームで(画面左側に縦表示で検索フォームはありました) そこに検索したいキーワードを入れると(縦表示に)ズラ~っと検索結果が表示され、見たいものをクリックするとそのすぐ右側にクリックしたページが大きく表示されるというスタイルだったのに・・・ 今は、yahooでも、googleでも、検索フォームは画面の上部にあり(横長のフォーム)、検索ワードを入力すると、そのすぐ下に検索結果が表示され、それをクリックすると・・・別ウインドウは開かなくとも丸々1ページクリックしたページに切り替わるので、以前のように検索候補にあがったページを左画面に表示し、見たいページを右画面で見るということができなくなったので非常に不便です。他のページを見たいときも戻らないといけないし、、、 どうにかして、昔の様式に戻せないでしょうか? 画面左端に検索フォームをおき、候補にあがったサイトは検索フォームすぐ下に 縦表示で羅列され、見たいページがあればクリックして、それを右画面に大きく表示する ひとつのページに検索結果(左画面)と見たいページ(右画面)を並べたいんです。 パソコンはWINDOWS7です。

  • Access、検索用フォームでのあいまいな検索

    現在、Accessでデータベース作成をしています。 テーブル:  ・テーブルA          ・テーブルB          (A・B間にリレーションシップ設定) クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成) フォーム   ・検索用フォーム(デザインビューでフォーム作成より)          ・検索結果フォーム(検索クエリを元に作成) また、以下のような設定を入力しました。 「検索クエリ」の抽出欄  Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)  ※検索したい項目、すべての抽出欄に設定済 「検索用フォーム」  検索実行ボタンを作成し、マクロを設定  ・フォームを開く→「検索結果フォーム」  ・フィルタ→「検索クエリ」 上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。 ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも (1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。 2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか?? ご存知の方、ぜひ教えてください。 よろしくお願いいたします。

  • アクセスのマクロでの再検索

    ACCESSで住所録を作っています。 入力のためにフォームを作成し、そのフォーム上にボタン「検索」「すべて表示」を作りたいと思っています。 マクロ  1.「検索」はアクションを「フィルタの実行」、フィルタは別にクエリで作成し、別に用意したテキストボックスに文字を入れてボタンを押すことによって検索できるように設定しました。  2.「すべて表示」は1つめのアクションが「全レコードの表示」、2つめのアクションが、検索文字を入れるテキストボックスへの「値の代入」で「""」を指定しました。 これでやってみたのですが、1回目の「検索」はうまく働くのですが、「すべて表示」して、2回目以降「検索」ボタンを押しても、1回目と同じ結果しか出てきません。 この2つのボタンが正しく働き、再検索ができるようにするにはどうすればよいのでしょうか? モジュールを作成するのでしょうか? ぜひご指導をお願いいたします!

専門家に質問してみよう