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 の中を、セルに貼り付けれたら良いようですが
どうも、ここまで進むと、理解できておらず、、、
ご教示いただけないでしょうか。
No.2ベストアンサー
- 回答日時:
x = objIE.document.all.Item("keywords").content
MsgBox (x)
を付けたら取れるんですけどね。
(実際に実行してみてください。メッセージボックスに表示されるはずです)
ただ、説明しろといわれると大変で・・・
document.all.Item("keywords").content
については、ダイナミックHTMLの勉強をしてください。
objIE.
の後につけたらなぜ取れるかは、VBのクラスの勉強をしてください。
どうもありがとうございました。
おかげさまで、必要な物を取り込むことはできました。
とは言え、応急処置である事も何となく分かりました。
もっと勉強ます。
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
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).???とかの中身を見てもらって
それからにしたほうがよさそうかと思っています。)
No.1
- 回答日時:
>こちらの、content の中を、セルに貼り付けれたら良いようですが
>content の中を、の意味をどのつもりで言っているのか判らないが。
違うと思います。そこの部分だけでは済まないでしょう。
ーー
質問で載せている、プログラムで、URLのサイトをプログラム内やエクセルのセルに指定して、プログラムで自動で開く、処理まではコピペでもして、実行すればそのとおりできます。
しかし、その後が問題で、ブラウザ(IEなど)にはHTML文のテキスト+画像・音声ファイルなどしか質問者のパソコンに来てません。
ブラウザは、中身の意味内容などを考えず(仕組みが無くて考えられない)、体裁や色など表現方法を中心に、筋書き(タグの指定)どおり整えて画面に表示しています。
そのWEBサイトのHTML文テキストは、どうなって居るかは、勉強すれば捕まえられるが、問題はその先です。
抜き出したい内容の文章や数値部分はWEB作成者が普通は目じるしをつけてくれていませんので、質問者の方では、一発で抜き出せません。HTML文の中から会社名を抜き出せといっても出来ないのです。意味的な中身を示すタグがないのです。
そこで例えばXXとある語句に次から何文字とか、自分のほしい情報のあり場所の特徴を考え、それをとらえて抜き出す(さらには整形する)プログラムを自分で作らないといけません。
(株式相場を知らせるサイトなどには、何か印や仕掛けがあるかもしれませんが私は勉強不足です。)
ほかに表になっていて、その目的データが何行目の何列目とかの特徴も役立つかもしれません。
うまく行けばWEBの表の部分を、エクセルシートに表として貼り付けられる可能性もあると思います。
外に同一語句出現や表が複数有り、何番目の表とかを判別しないといけないこともあるでしょう。
ーー
そのほかにWEBサイトの内容(相場の価格のような内容変動でなくて)、 体裁・構成が作成者側の都合で変えられることが頻繁にあります。データの多少で、量や行数の変動もあります。
すると前記で苦労した捕捉と抜き出しのロジックは一朝にして役立たなくなる場合があります。ある程度の変更にたえうるプログラムの作り方もあるとおもいます。。
ーーー
上述のようなプログラムを組めるようになるのは、それなりに勉強と経験を積む必要があります。エクセルVBAなどとは
違ったタイプの処理パターンですから。
また、こういう文章の特徴をとらえて、文字列を捕まえようとするソフトの概念に正規表現があります。
これなどの勉強が役立つかもしれない。しかし習得に時間はかかると思う。
ーー
やるのなら入り口として
Googleででも
IE.document.body.innerHtml
IE.document.body.InnerText
を取得し、
これで返された文章が、考える出発点でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS html cssのmargin 5 2022/12/03 11:04
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- HTML・CSS htmltとcssのコードで 1 2022/11/26 13:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
逆フーリエ変換のプログラムに...
-
他人が作ったプログラムのメン...
-
きれいなコード vba vbaを勉強...
-
BIOSってどんなCPUで処理してる...
-
プログラム動作時のCPU処理時間...
-
VBからシャットダウンさせる方法
-
Vba 実数および実数タイプの変...
-
C++ で、「)」が必要 というエ...
-
正しい五十音順について
-
VBAにてメール作成した際、一部...
-
あるプログラムのコマンドライ...
-
パックマンプログラム
-
Notepad++の関数リスト表示でC...
-
0除算して、落ちるプログラムと...
-
VBAが止まります。
-
Stuck
-
バッチファイルでUSB挿入時に実行
-
「Outlookが他のプログラムによ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
空elseの有無
-
COBOLのCALL文がいまいちつかめ...
-
プログラミングのコード量に関...
-
VBからシャットダウンさせる方法
-
他人が作ったプログラムのメン...
-
プログラム動作時のCPU処理時間...
-
C++ソースからUMLの設計書を作...
-
変数・オブジェクト名に漢字使用
-
CからJavaの呼び出し
-
ソースコード改造 msペイント
-
プログラミングの読み方、書き...
-
きれいなコード vba vbaを勉強...
-
MFC,C++/CLI,C#の共存
-
ActiveXコントロールの作成(V...
-
BIOSってどんなCPUで処理してる...
-
「ルーチン」という言葉の意味
-
テキストの折り返し処理について
-
Visual Basic で C++ を使いたい!
おすすめ情報