[三流君] [VBAで楽しく] [VBA IE 操作]
−−> No.164 IE .getElementsByTagNameでタグ指定 .Quitで閉じる

IE .getElementsByTagNameでタグ指定 .Quitで閉じる

楽天Booksのリンク取得が変更になったので、テストプログラムは動作しないです
参考程度に見てください。
※2005/10/20修正

発行内容

IE .getElementsByTagNameでタグ指定 .Quitで閉じる

どうも、三流プログラマーのKen3です。

今回は、IEでパラメータ入力後に、
新たに開かれた結果ウインドウから情報を抜き出し、
そのウインドウを閉じる、そんなことにチャレンジしてみます。
※起動したIEから広告コードを抜き取って用済みになった(失礼)IEを閉じる。

/* * 1.やりたいこと 概要 */

楽天ブックのリンク作成ページ http://books.rakuten.co.jp/afvc/afinfo/page03.html ここで、 ISBN番号 と 自分の広告コードのSIDとPIDを入力してボタンを押すと ソースが表示される。 この広告コードを取得、そんなプログラムを作ってみたい。 ポイントになるのが、繰り返しになってしまいますが、 新規のイベントで自分で作ったオブジェクトを代入してます。 '新しいウインドウを開くイベントをチェックする
Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)

    '新しいウインドウを自分の管理下に置きたいので、オブジェクトを代入してあげる
    Set objNEW_IE = CreateObject("InternetExplorer.Application")
    Set ppDisp = objNEW_IE   '作ったオブジェクトを代入

    objNEW_IE.Visible = True '念のため見えるようにする

End Sub
Dim WithEvents objNEW_IE As InternetExplorer とイベントを取れる宣言しているので、 テストで、URLとソースを表示してみました。 '新しく作成したウインドウが読み込まれたら、処理したいので、
Private Sub objNEW_IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    MsgBox "あたらしく開かれたURLは" & URL
    MsgBox "HTMLソースは" & objNEW_IE.Document.all(0).innerhtml
End Sub
と、オブジェクトを自分の管理下に置くことができました。 ここから、広告コードを抜き取って、ウインドウを閉じたいと思います。

/* * 2.タグ名指定でオブジェクトをGetする .getElementsByTagName */

オブジェクトが操作可能となったので、広告コードを取り出してみたいと思います。 objNEW_IE.Document.all(0).innerhtml からinstr関数で<TEXTAREA>のタグを探す方法もあるのですが、 今回はカッコつけて、 .getElementsByTagName("タグの名前") を使用してみます。 TEXTAREAのタグなので、 .getElementsByTagName("TEXTAREA") として、取り出してみます。 '新しく作成したウインドウが読み込まれたら、処理したいので、
Private Sub objNEW_IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    '読み込み完了を判断する
    If objNEW_IE.ReadyState = READYSTATE_COMPLETE Then '読み込み完了
      'テキストをセットする
      Me.txtKCODE.Value = _
         objNEW_IE.Document.getElementsByTagName("TEXTAREA").Item(0).InnerTEXT
    End If
End Sub
と、こんな感じで、 .getElementsByTagName("TEXTAREA").Item(0).InnerTEXT タグの名前がTEXTAREAでアイテム0番目の内部テキスト を取得できました。

/* * 3.新しく開かれたIEを閉じる .Quitする */

あとは、取得が終わったので、閉じてみます。 閉じるのは.QUITメソッドです。 '新しく作成したウインドウが読み込まれたら、処理したいので、
Private Sub objNEW_IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    '読み込み完了を判断する
    If objNEW_IE.ReadyState = READYSTATE_COMPLETE Then '読み込み完了
      'テキストをセットする
      Me.txtKCODE.Value = _
         objNEW_IE.Document.getElementsByTagName("TEXTAREA").Item(0).InnerTEXT
      'IEを閉じる
       objNEW_IE.Quit
    End If
End Sub
ソース取得後、バイバイって感じです。 回線速度が速いと、開いてすぐ閉じてとなると思います。 私の場合は一瞬間があって、見えます。

/* * 4.終わりの挨拶 */

webフォームにパラメータをセットして処理実行、 実行時、新しい情報ウインドウが開かれる(新規IEが起動する) そのウインドウから結果データを取得して、閉じる。 そんな流れのテストプログラムでした。 何か読者の心に残れば、うれしいです。 *私の独り言をうまく消化してくださいね。 在宅三流プログラマー Ken3でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.164を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります


ページフッター(リンクや広告など)

[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・