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

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

概要:
.getElementsByTagName("タグの名前")
で指定したオブジェクトを取得できます。
新規ウインドウに表示された広告コードなどTEXTAREAのタグを
.getElementsByTagName("TEXTAREA")
で取り出し処理を行い、その後、.Quitで新規に開いたIEを閉じました。


※メルマガ記事ではオブジェクトの参照設定をしていませんができれば、下記を参考に参照設定してください。
[Microsoft Internet Controls,Microsoft HTML Object Library を参照設定する](このほうが開発時、操作時に楽)
また、VistaとIE7の場合は、 [IE7 操作 Vistaで失敗]も参考にしてください。

リンク 分類: [Document(文章)からデータを取得] / [Form入力処理] / [Linkリンク情報] / [Image画像情報] / [Frameフレーム処理] サンプル: [IEを使ったVBAのサンプル] / [小さなVBAでIE操作のコード]

メルマガ発行内容

やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。


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

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でWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]

大分類:[Document.Forms(入力処理)] / [Document.Links(リンク情報)] / [Document.Images(画像情報)] / [Document.Frames(フレーム処理)]
サンプル・例題:[過去のメルマガ記事一覧] / [少し大きなIE操作サンプル] / [小さなコードでIE操作の動作確認]

F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[F1ヘルプ マクロ記録ほか]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、デバッグモード]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[VBA ウォッチ式とSTOPを使ってみた]・・・STOPで止め、ウォッチ式でオブジェクトの中身を確認する方法など
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話

項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。
[プログラムは心? spirit]・・・プログラマー 心・気質・魂
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話

項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。
[VBAでIE ウェブブラウザーを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[MSアクセス から エクセル を呼ぶ Excel.Application]・・・AccessからExcelを操作したりデータの書き出しなどです
[アウトルック メールの操作 Outlook.Application]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[エクセル ユーザーフォームを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[エクセルからアクセスを操作する]・・・ExcelからAccessのマクロを起動してみました、
[エクセル関係 関数、その他]・・・その他Excel関係です

Access関係:
[アクセス ユーザーフォーム/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[アクセス レポート操作]・・・レポートを操作してみました
[アクセス クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[テキストファイルの操作(Open,Close,Print,Input)]・・・普通のテキストファイルを使ったサンプルです

Blog:[三流君の作業日記]/ [objIEを使用したサンプルコードを見る]/ 広告-[通販人気商品の足跡]

質問や要望など メッセージを送る(三流君に連絡する)

三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。

感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。

あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。



[トップページへ 戻る] / [VBA TOP] / [WebBrowser IEの操作 TOPへ]