プロが教える店舗&オフィスのセキュリティ対策術

VBAからIEを起動
検索サイトの結果をエクセルのセルに取り込みたいのですが
とあるサイトのコードを使わせていただいておりまして

(gooで人気キーワードを開く所まで)
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://cache001.ranking.goo.ne.jp/crnk/ranking/0 …

その後、ソースを見ると

<title>gooウェブ検索 急上昇ランキング (総合) - 検索ランキング
-
- goo ランキング</title>
<meta name="content-language" content="ja">
<meta name="keywords" content="天気予報,ホテルメトロポリタン,ONE PIECE,労働組合,全日本空輸,iPad2,世界フィギュアスケート選手権2011,プレイステーション,伴久ホテル,リバウンド">

どうやら、こちらの、content の中を、セルに貼り付けれたら良いようですが
どうも、ここまで進むと、理解できておらず、、、

ご教示いただけないでしょうか。

A 回答 (4件)

x = objIE.document.all.Item("keywords").content


MsgBox (x)
を付けたら取れるんですけどね。
(実際に実行してみてください。メッセージボックスに表示されるはずです)
ただ、説明しろといわれると大変で・・・

document.all.Item("keywords").content
については、ダイナミックHTMLの勉強をしてください。

objIE.
の後につけたらなぜ取れるかは、VBのクラスの勉強をしてください。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

おかげさまで、必要な物を取り込むことはできました。

とは言え、応急処置である事も何となく分かりました。
もっと勉強ます。

お礼日時:2011/05/02 11:09

自分の場合、ソースをテキストファイルに保存して、読み込ませて処理しています。


私自身素人なので最適解ではないと思いますが。
以下のサンプルのうち、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/02 11:10

#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).???とかの中身を見てもらって
それからにしたほうがよさそうかと思っています。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/02 11:11

>こちらの、content の中を、セルに貼り付けれたら良いようですが


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

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

お礼日時:2011/05/02 11:12

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