VBAでIEの情報を取得する方法【初心者】

このQ&Aのポイント
  • VBAを使用してInternet Explorerの情報を取得する方法についてお教えください。
  • 具体的には、VBAからIEを起動し、検索サイトの結果をエクセルのセルに取り込む方法を知りたいです。
  • 現在、特定のサイトのコードを使用していますが、最後の部分で理解できていない状況です。どのように進めれば良いでしょうか?
回答を見る
  • ベストアンサー

VBAでIEの情報を取得したい【初心者】

VBAからIEを起動 検索サイトの結果をエクセルのセルに取り込みたいのですが とあるサイトのコードを使わせていただいておりまして (gooで人気キーワードを開く所まで) Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://cache001.ranking.goo.ne.jp/crnk/ranking/001/keyrank_all1/p1/" その後、ソースを見ると <title>gooウェブ検索 急上昇ランキング (総合) - 検索ランキング - - goo ランキング</title> <meta name="content-language" content="ja"> <meta name="keywords" content="天気予報,ホテルメトロポリタン,ONE PIECE,労働組合,全日本空輸,iPad2,世界フィギュアスケート選手権2011,プレイステーション,伴久ホテル,リバウンド"> どうやら、こちらの、content の中を、セルに貼り付けれたら良いようですが どうも、ここまで進むと、理解できておらず、、、 ご教示いただけないでしょうか。

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

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

x = objIE.document.all.Item("keywords").content MsgBox (x) を付けたら取れるんですけどね。 (実際に実行してみてください。メッセージボックスに表示されるはずです) ただ、説明しろといわれると大変で・・・ document.all.Item("keywords").content については、ダイナミックHTMLの勉強をしてください。 objIE. の後につけたらなぜ取れるかは、VBのクラスの勉強をしてください。

shikaburin
質問者

お礼

どうもありがとうございました。 おかげさまで、必要な物を取り込むことはできました。 とは言え、応急処置である事も何となく分かりました。 もっと勉強ます。

その他の回答 (3)

回答No.4

自分の場合、ソースをテキストファイルに保存して、読み込ませて処理しています。 私自身素人なので最適解ではないと思いますが。 以下のサンプルのうち、do~loopの中で好きな処理をさせて下さい。 Set Http = CreateObject("MSXML2.XMLHTTP") Http.Open "GET", "http://tv.yahoo.co.jp/", False Http.SetRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT" Http.Send buf = Http.responseText Open ThisWorkbook.Path & "\tmp.txt" For Output As #1 Print #1, buf Close #1 Set TS = FSO.OpenTextFile(ThisWorkbook.Path & "\tmp.txt", ForReading) Do Until TS.AtEndOfStream buf2 = TS.ReadLine loop Set TS = Nothing Set FSO = Nothing Set Http = Nothing

shikaburin
質問者

お礼

サンプルソースまで書いていただき、ありがとうございました。 後学のため、メモさせていただきました。

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

#2です。 書き忘れていましたが。 <meta name="keywords" content="天気予報,ホテルメトロポリタン,ONE PIECE,労働組合,全日本空輸,iPad2,世界フィギュアスケート選手権2011,プレイステーション,伴久ホテル,リバウンド"> より、つまりname="keywords"のcontent=で設定した内容 をとりたいという質問に受け取って回答をかいています。 この文は、丁寧にnameが指定されていますが、検索結果は指定されているかどうかわかりません。 指定されていなければ、#2の回答の"keywords"の部分を数字にして、 結果の文字列を探し回らなくてはいけません。 ところが、数字に変えた場合、ありとあらゆる要素が返ってくるので content=がない要素が返ってくる場合もあります。 このときはエラーとなってしまうので対処する処理も記述する必要があります。。。 (とりあえず、ダイナミックHTMLでも勉強してもらって、何がほしいかを考えて、 document.all.item(1).???とかdocument.all.item(2).???とかの中身を見てもらって それからにしたほうがよさそうかと思っています。)

shikaburin
質問者

お礼

応急処置であることを理解して、勉強に励みます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>こちらの、content の中を、セルに貼り付けれたら良いようですが >content の中を、の意味をどのつもりで言っているのか判らないが。 違うと思います。そこの部分だけでは済まないでしょう。 ーー 質問で載せている、プログラムで、URLのサイトをプログラム内やエクセルのセルに指定して、プログラムで自動で開く、処理まではコピペでもして、実行すればそのとおりできます。 しかし、その後が問題で、ブラウザ(IEなど)にはHTML文のテキスト+画像・音声ファイルなどしか質問者のパソコンに来てません。 ブラウザは、中身の意味内容などを考えず(仕組みが無くて考えられない)、体裁や色など表現方法を中心に、筋書き(タグの指定)どおり整えて画面に表示しています。 そのWEBサイトのHTML文テキストは、どうなって居るかは、勉強すれば捕まえられるが、問題はその先です。 抜き出したい内容の文章や数値部分はWEB作成者が普通は目じるしをつけてくれていませんので、質問者の方では、一発で抜き出せません。HTML文の中から会社名を抜き出せといっても出来ないのです。意味的な中身を示すタグがないのです。 そこで例えばXXとある語句に次から何文字とか、自分のほしい情報のあり場所の特徴を考え、それをとらえて抜き出す(さらには整形する)プログラムを自分で作らないといけません。 (株式相場を知らせるサイトなどには、何か印や仕掛けがあるかもしれませんが私は勉強不足です。) ほかに表になっていて、その目的データが何行目の何列目とかの特徴も役立つかもしれません。 うまく行けばWEBの表の部分を、エクセルシートに表として貼り付けられる可能性もあると思います。 外に同一語句出現や表が複数有り、何番目の表とかを判別しないといけないこともあるでしょう。 ーー そのほかにWEBサイトの内容(相場の価格のような内容変動でなくて)、  体裁・構成が作成者側の都合で変えられることが頻繁にあります。データの多少で、量や行数の変動もあります。 すると前記で苦労した捕捉と抜き出しのロジックは一朝にして役立たなくなる場合があります。ある程度の変更にたえうるプログラムの作り方もあるとおもいます。。 ーーー 上述のようなプログラムを組めるようになるのは、それなりに勉強と経験を積む必要があります。エクセルVBAなどとは 違ったタイプの処理パターンですから。 また、こういう文章の特徴をとらえて、文字列を捕まえようとするソフトの概念に正規表現があります。 これなどの勉強が役立つかもしれない。しかし習得に時間はかかると思う。 ーー やるのなら入り口として Googleででも IE.document.body.innerHtml IE.document.body.InnerText を取得し、 これで返された文章が、考える出発点でしょう。

shikaburin
質問者

お礼

初心者が、目に見える物だけで処理しようとしている事らしい と言う事は分かりました。 ありがとうございました。 勉強してみます。

関連するQ&A

  • もっともよく検索される方法

    もっともよく検索される方法 gooの検索で自分のHPがよくHITされる方法を教えてください。 <meta name="description" content=""> <META name="keywords" content=""> なんかは有効なんでしょうか? それと私のHPはフレーム付なんですが注意点なんかあったら教えてください。 と昔のlogにあったんですけど <meta name="description" content=""> <META name="keywords" content=""> の意味がわかりません。 だれか教えてください

  • SEO

    SEOについて質問です! キーワードについてですが <meta name="keywords" content="高級,ホテル" /> と <meta name="keywords" content="高級ホテル" /> とでは検索順位が変わるのはわかりますが、 「高級ホテル」で狙いたいときは 「高級,ホテル」と「高級ホテル」 どちらにすればいいでしょう?

    • 締切済み
    • SEO
  • サーチエンジンについて

    サーチエンジンに登録して数ヶ月経つのですが、トップページは検索にひっかかるのですが、他のページがまったく引っかかりません。 トップページにはこのようなダグを置いています。 <TITLE>○○○</TITLE> <META NAME="ROBOTS" CONTENT="ALL"> <META name="description" content="○○"> <META name="keywords" content="○○"> <META name="robots" content="index,follow"> これだけでは、すべてのページは検索にかからないのでしょうか?一つ一つのページに置かないと駄目なのでしょうか? とても初歩的な質問で申し訳ありません><

  • gooの検索で自分のHPがよくHITされる方法

    gooの検索で自分のHPがよくHITされる方法を教えてください。 <meta name="description" content=""> <META name="keywords" content=""> なんかは有効なんでしょうか? それと私のHPはフレーム付なんですが注意点なんかあったら教えてください。

  • 検索エンジンについて

    9月の終わりにgoogle検索に登録したのですが 今日検索をかけても自分のHPがひっかからなくて困っています <HTML><HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <Meta Name="description" Content="こちらに説明"> <Meta Name="keywords" Content="こちらに,検索,タグを入れてます"> <Meta Name="ROBOTS" Content="INDEX"> <TITLE>HPタイトル</TITLE> <style type=text/css> </HEAD><BODY BGCOLOR="#ffffff"> こちらに内容 </BODY></HTML> このように記述しています なぜ検索にひっかからないのかどうしてもわかりません 原因がわかる方がいらっしゃいましたら教えてください

    • ベストアンサー
    • HTML
  • タグについて『問題があるかどうか?』

    <meta name="KEYWORDS" content=""> <meta name="DESCRIPTION" content=""> 上記のタグは <head> </head> タグの間ならば、どこに記述しても問題ないでしょうか? <meta name=>タグや、<title>タグと混ざっても大丈夫でしょうか? 一番上の上記のキーワードタグは、例えば<title>タグの上に記述しなければならない、などという決まりごとはあるんでしょうか? 分かりにくいかと思うので、 ソースを直接書き出しておきます。 このソースの記述に問題(レイアウト上の問題や、キーワード検索が動かない、など)があるようなら指摘お願いします。 <head> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"> <meta name="KEYWORDS" content="キーワード1,キーワード2,キーワード3"> <meta name="DESCRIPTION" content="コメント"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <title>タイトル</title> </head>

    • ベストアンサー
    • HTML
  • 携帯サイトのソースについて

    携帯サイトのソースについて 先ほど質問したものです。 以下のソースだったらすべて(ほとんど)の携帯電話で 表示されるでしょうか? 訂正した方がいいところがあれば教えていただけますか。 <html> <head> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta name="description" content="比較ランキング"> <title>比較ランキング</title> </head>

    • ベストアンサー
    • HTML
  • vba ie操作 検索後のタイトルが取得できない

    vba ie操作 ヤフーファイナンス 検索後のタイトルが取得できない win8、エクセル2010です。 ヤフーファイナンスで会社名を検索して、その後のコードを取得したいのですが その場合、タイトルに企業コードがあるので、その文字を取得しようとしたら、 検索前のページが取得されてしまいます。 ------------------------------------------------------------ Dim objIE As New InternetExplorer Sub test() Dim str企業名 As String Dim myObj As Object str企業名 = "ホテルオークラ" Set objIE = CreateObject("InternetExplorer.application") With objIE .navigate "http://finance.yahoo.co.jp/" .Top = 0 .Left = 0 .Width = 1000 .Visible = True End With Call IE_wait For Each myObj In objIE.document.all.tags("input") If myObj.ID = "searchText" Then myObj.Value = str企業名 Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.ID = "searchButton" Then myObj.Click Call IE_wait Exit For End If Next Debug.Print objIE.document.Title Set objIE = Nothing End Sub ----------------------- Sub IE_wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.readyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub ------------------------------------------------------------ というコードなのですが 検索語の2ページ目は 「(株)京都ホテル【9723】:株式-株価 - Yahoo!ファイナンス」 というタイトルなのに 1ページ目と同じ 「Yahoo!ファイナンス - 株価やニュース、企業情報などを配信する投資・マネーの総合サイト」 が返ります。 なぜ次のページのタイトルが取得できないのでしょうか? 画面上IEブラウザには2ページ目が表示されています。

  • METAタグについて

    HPに以下の様な記述をしたのですが、gooやinfoseekに登録して1週間経ても、全く検索されません。 <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta name="robots" content="index,follow"> <meta name="keywords" content=""> <meta name="description" content=""> 正しい記述方法について、何方か教えて下さい。

    • ベストアンサー
    • HTML
  • 無料サーバーで作ったホームページが検索エンジンに反映されない

    有料サーバーで作ったHPは検索エンジンに反映されるのですが、無料(ジオシティーズ、トリポッド等)のところは3ヶ月以上待っても反映されません。下記のようなタグは入れているのですが・・・ <HEAD> <META name="robots" content="index,follow"> <META NAME="keywords" CONTENT=""> <META NAME="description" CONTENT=""> <TITLE></TITLE> </HEAD>

専門家に質問してみよう