概要: Dim WithEvents objNEW_IE As InternetExplorer でオブジェクト変数を定義して_NewWindow2で新規IEを作成、 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 下記のように、作成したIEのイベント(ここでは読み込み完了)で処理したサンプルです Private Sub objNEW_IE_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox "あたらしく開かれたURLは" & URL End Sub ※メルマガ記事ではオブジェクトの参照設定をしていませんができれば、下記を参考に参照設定してください。 [Microsoft Internet Controls,Microsoft HTML Object Library を参照設定する](このほうが開発時、操作時に楽) また、VistaとIE7の場合は、 [IE7 操作 Vistaで失敗]も参考にしてください。 |
リンク 分類:
[Document(文章)からデータを取得]
/ [Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル:
[IEを使ったVBAのサンプル]
/ [小さなVBAでIE操作のコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
どうも、三流プログラマーのKen3です。 今回は、 リンクを右ボタンで新しいウインドウで開く や Target=_Blank など 親ウインドウから子供のウインドウが開かれた時の管理について少し書きます。 IE操作で、何かの参考となれば、幸いです。/* * 1.今回のキッカケ */
右ボタンなどを押して、新しいウインドウをユーザーの意思で開くことができます。 まぁ、マルチにウインドウを開いて処理を行う、普通のことなのですが、 Webコントロールをフォームに貼ったりして作業していると、 自分(自作プログラム)の配下から離れてしまいます。 そんなことをさせなかったり、 されても、作られたオブジェクトを追ってみたいと思います。 WebBrowser1 とWebのコントロールを作ります。 WebBrowser1_NewWindow2で、新しいウインドウが開かれた時のイベントを受取れます。 これを使用してみます。/* * 2.新しいウインドウが開く時に発生するイベント_NewWindow2 */
新しいウインドウが開かれると発生するイベントがあります。 IE アプリケーションのイベントを横取りする http://www.ken3.org/vba/backno/vba108.html で、少し、_NewWindow2とWithEventsについて書いてあります、 こちらも合わせて確認してください。 WebBrowserコントロールをフォームに貼り、 下記のプログラムを記述し テストで、初期ページを表示させ、どこかのリンクで新しいウインドウを開きます。
Private Sub UserForm_Initialize() Me.WebBrowser1.GoHome '初期ページを表示する End Sub |
Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean) '新しいウインドウが開かれた時に呼ばれる。 If MsgBox("新しいウインドウを開きますか?", vbYesNo) = vbYes Then Cancel = False 'Yesの時はキャンセルしない Else Cancel = True 'NOの時は新しいウインドウを開かない End If End Sub |
Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean) Cancel = True '必ず新しいウインドウを開かない End Sub |
Private Sub UserForm_Initialize() Me.WebBrowser1.GoHome '初期ページを表示する End Sub |
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 |
Private Sub objNEW_IE_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox "あたらしく開かれたURLは" & URL End Sub |
Private Sub objNEW_IE_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox "あたらしく開かれたURLは" & URL End Sub |
Private Sub btnRUN_Click() Dim time10 As Date '広告作成ページに飛ぶ Me.WebBrowser1.Navigate2 "http://books.rakuten.co.jp/afvc/afinfo/page03.html" '2秒表示を強制的に待つ time10 = DateAdd("s", 2, Now()) Do While True DoEvents If time10 < Now() Then Exit Do Loop '表示完了を待つ While Me.WebBrowser1.Busy = True _ And Me.WebBrowser1.ReadyState <> READYSTATE_COMPLETE DoEvents Wend 'データをセットする Me.WebBrowser1.Document.parts.isbn.Value = Me.txtISBN.Text Me.WebBrowser1.Document.parts.sid.Value = Me.txtSID Me.WebBrowser1.Document.parts.pid.Value = Me.txtPID 'JavaScriptを起動する(リンクで飛ぶように見せかけるの?) Me.WebBrowser1.Navigate2 "JavaScript:parts('B')" End Sub |
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 |
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 |
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。