[三流君] [VBAで楽しく] [VBA IE 操作]
−−> No.124 IE _BeforeNavigate2イベントでPostデータを覗き見する

IE _BeforeNavigate2イベントでPostデータを覗き見する

概要:
_BeforeNavigate2、次のURLへ移る前のイベントで、
PostDataをチェックしてみました。


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

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

メルマガ発行内容

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

<IE _BeforeNavigate2イベントでPostデータを覗き見する>

どうも、三流プログラマーのKen3です。 今回は、読者数6人の有料メルマガから宣伝で1つサンプルを出します。

/* * 1. 今回のキッカケ */

有料版のメルマガ、読者数6人まで減りました。 内容が薄いから?なんだけど・・・(オイオイ) 先週発行したメルマガからサンプルを1つダイジェストで載せます。 気に入ったら、 http://www.ken3.org/pmagmag/office/ から、登録してみてください。 よろしくお願いします。 ----- こんな感じで書いてます ----- [ Microsoft Officeで作るツールと業務システム No.032 ] 2003/09/06 毎週土曜日 <IEの送信データを覗き見する> こんにちは、三流プログラマーのKen3です。 http://www.ken3.org/p/office-032.lzh に、 今回使用した、IEのイベントを探るテストプログラムが圧縮されてます。 動かしてテストしてみてください。 (Access2000 形式のMDBです。)

/* * 1. 今日の狙い・・・ */

今回は、IEの送信データを覗き見、してみたいと思います。 なんて書いてますが、たいしたことなく、 Formなどで送信したデータを見るだけです。

/* * 2.フォームにWebのコントロールを貼る */

まず、フォームにWebのコントロールを貼ります。 まず、Accessのフォーム作成で、 挿入・ActiveXコントロールを選択します。 次に、 Microsoft Web Browser コントロールを選択します。 すると、簡単にコントロールを貼ることが出来ます。

/* * 3.IEのイベントを探る */

通常、コントロールに対して、プロパティやメソッドを実行して、 操作を行います。
Private Sub cmdHOME_Click()
    Me.WebBrowser0.GoHome
End Sub
cmdHOMEとボタンのコントロールを作成後、 _Click()のクリックイベントに処理を記述してます。 記述した処理は、 Me.WebBrowser0.GoHome Me.自分のフォーム WebBrowser0 WebBrowserコントロール .Gohome 初期ページへ飛ぶメソッド を実行しただけです。 cmdHOME_Click() は、ボタンのクリックイベントでした。 これと同様に、 WebBrowserコントロール もイベントを持っています。 どのようなイベントがあるか、簡単な方法は、 左上のオブジェクトの選択で、 WebBrowser0(WebBrowserコントロール) を 選択後、右上のイベントボックスをみるといろいろとあります。 ↑選択のイメージ 今回は、 _BeforeNavigate2で、次のURLへ移る前のイベント、 _DocumentCompleteで、ドキュメントの完了 (_NavigateComplete2 の違い) を探ってみます。 まず、 _BeforeNavigate2 のイベント。 このイベントは、次のURLに移る前に発生します。
Private Sub WebBrowser0_BeforeNavigate2( _
            ByVal pDisp As Object, _
            URL As Variant, _
            Flags As Variant, _
            TargetFrameName As Variant, _
            PostData As Variant, _
            Headers As Variant, _
            Cancel As Boolean)
    Debug.Print "URL:" & URL
    Debug.Print "FlagsL:" & Flags
    Debug.Print "PostData2" & StrConv(PostData, vbUnicode)
    If Len(PostData) <> 0 Then
        Me![txtSENDDATA] = StrConv(PostData, vbUnicode) '送信データのチェック
    End If
End Sub
テストのポイントは、 StrConv(PostData, vbUnicode) と、送信データを変換して、テキストボックスにセットしてます。 このイベントが、次のURLに行く前に発生するので、 USER-NAME=%93%BD%96%BC%8A%F3%96%5D など、通常は見えない、IEがWebのCGIへ送るデータを横取りしてます。 下記は、おまけのテストで、 _DocumentComplete で、完了時にデータをセットしてます。 広告が別フレームで表示されている時も、発生して、少々うざいけど。
Private Sub WebBrowser0_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Debug.Print URL
    Debug.Print pDisp.Document.Title
    Me![txtURL] = URL
    Me![txtTITLE] = pDisp.Document.Title
    Me![txtHTML] = pDisp.Document.all(0).innerHTML
End Sub
Private Sub WebBrowser0_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Debug.Print "n:" & URL
    Debug.Print "n:" & pDisp.Document.Title
End Sub

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

http://www.ken3.org/p/office-032.lzh に、 今回使用した、IEのイベントを探るテストプログラムが圧縮されてます。 動かしてテストしてみてください。 (Access2000 形式のMDBです。) いろいろとデーターを送信するページでテストしてみてください。 掲示板やアンケート、いろいろなデータを送っているのがわかると思います。 これを応用して、自動実行、IE操作記録ツールなんてのを狙っているんだけどなぁ。 次回は、もう少しマシな解説をしたいですが・・・ ※できたら、世に出せるくらいのツールになるといいけど、、、 プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってます。 月400円は高いので、気長にヒット作を待てる人は購読続けて下さいね。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ よろしくお願いします。 ※ハヤク、効果のあるツール、サンプルを作らないと、、、 AB型の変わり者、三流プログラマーのKen3でした。 -----

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

どうでしたか? えっ、これで月400円は高いって? ですよねぇ・・ Officeで作るツールと業務システム、、、とタイトルはリッパなんだけど、 中身がねぇ。 これなら、400円のシェアウエアを買ったほうがいいって? ですよねぇ・・・ なんて、いつもの自分落としネタを書いておいて、 もし、興味を持った人が居たら、 http://www.ken3.org/pmagmag/office/ の下記、有料版のメルマガ、 Microsoft Officeで作るツールと業務システム ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 発行周期 毎週土曜日(年末年始除く) 購読料 400円/月 Microsoft Officeを使用してツール、業務のシステムを作成(手順を解説します) 主にExcel -- Accessの連携、VBAの解説です 初心者歓迎です、有料版なので遠慮しないでドンドン質問下さい。 毎週土曜日発行サンデープログラマーの楽しみ〜プロまで役立つツールを作りたいと 思ってます。 ---- ヨロシク検討してね。 ※あっ、有料版の特典が1つあった。  有料版読者の質問には、真っ先に答えてます。  (出来なかった質問も3人あって、たぶん解除されたんだけど・・・) ※金返せとメール来た時はショックだったけど・・・・ ※無料版のほうが面白いけど、無料版を有料と思って購読してます  とメール来たのは、複雑な心境になったけど。  (有料版価値無いけど、無料版が役に立ったからお金払ってあげる?って感じ?) Excel/Access大好き、三流プログラマー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へ]