|
概要: |
リンク 分類:
[Document(文章)からデータを取得]
/ [Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル:
[IEを使ったVBAのサンプル]
/ [小さなVBAでIE操作のコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
<VBAからIE操作 .document.forms(0).Submit でフォーム送信処理>
どうも、三流プログラマーのKen3です。 今回は、 VBAからIE操作 で、 フォームの送信処理をやってみます。 たいした解説、回答内容じゃないのですが。/* * 1.今回のキッカケ */
メールで下記の質問をもらいました。 ---- >それで、また質問なのですが、上記の環境と変わって、今はデータがPDF >ではなくHTMLからCSVで取得できます。そのさい、Accessから IE にHTML上の、 >INPUUT窓に入力コードとEnterをSendkeys で送りますが、{Enter}がダメで、結 >局マウスで実行ボタンをクリックしています。 > >これは、ActiveX上でのことで、通常のIE上では、入力、Enterが効きます。 >なにか、復壊コードとOSの関係かと思いますが、よろしくお願いします。 > >マシン環境は、WINME アクセス2000 IE6.0 です。 ---- う〜ん、Enterが送られないのかぁ。 で、 通常のIE上はOK、フォームに設置したActiveXコントロールは不可ってことか・・/* * 2.調べごと、下準備 */
やりたいことは、HTMLフォームにデータセットと送信ボタンクリックなので、 手前味噌的な紹介だと、 No.97 InternetExplorer.application操作 .Clickでクリック http://www.ken3.org/backno/backno_vba20.html#97 で、 http://www.ken3.org/cgi-bin/test/test068.html の下記のHTMLに対して、 <center> <h2>けんぞうのへんてこな世界へようこそ</h2> <br> <table bolder=1> <FORM ACTION="test068-1.asp" METHOD="POST"> USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br> <INPUT TYPE="submit" NAME="btn01" VALUE="ログイン"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> </table><br> <a Href="test068-2.asp" TARGET="_top">新規ユーザー登録</a><br> </center> データをセットして、送信ボタンを押してみました。
Sub ie_test_click()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/test/test068.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'項目名を指定して、データをセットする
objIE.document.all.userid.Value = "Ken3" 'ユーザー名
objIE.document.all.pass.Value = "aaa" 'パスワード
'データせっとできたので、
'ボタンを押してみる
objIE.document.all.btn01.Click 'クリックメソッドを実行
End Sub |
↑オブジェクトの中から、Formsを発見。
探り方の詳細は、
[No.52 InternetExplorer.application .document.body.innerText]
( http://www.ken3.org/backno/backno_vba11.html#52 を参照)
で、彼女(オブジェクト)の中身を探る方法を少し書いてます。
よし、さっそくテストしてみるか。
'フォームをクリックする?
objIE.document.forms(0).Click
と入れて実行。
オイオイ、何も起こんないよ、
ホントに動作してるのか?
これって、フォームをクリックしてるんじゃない?
ボタンならクリックでいいけど、
フォームは、submit でしょ?
そっか、では、テストで、
'フォームをSubmitする?
objIE.document.forms(0).Submit
でどうだ・・・
おっ、ログインできた。
objIE.document.forms(0).Submit
.forms(0)と、頭のフォームと番号で指定しているのが、
情けないけど、このフォームに対して、
.Submitでリターンキーを押した結果が得られます。
objIE.document.forms(0).Submit
IEオブジェクトのドキュメントの0番目のフォームをSUBMITって感じかなぁ。
最後に1行書いただけですが、フォームのSUBMITテストです。
いろいろと自分の環境に合わせて、テストしてみてください。
Sub ie_test()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/test/test068.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'項目名を指定して、データをセットする
objIE.document.all.userid.Value = "Ken3" 'ユーザー名
objIE.document.all.pass.Value = "aaa" 'パスワード
'フォームをSubmitする
objIE.document.forms(0).Submit
End Sub |
Private Sub コマンド1_Click()
Me!WebBrowser0.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
Me!WebBrowser0.Navigate "http://www.ken3.org/cgi-bin/test/test068.html"
'表示終了まで待つ
Do While Me!WebBrowser0.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'項目名を指定して、データをセットする
Me!WebBrowser0.Document.all.userid.Value = "Ken3" 'ユーザー名
Me!WebBrowser0.Document.all.pass.Value = "aaa" 'パスワード
'フォームをSubmitする
Me!WebBrowser0.Document.Forms(0).Submit
End Sub |
↑Accessフォーム上でのテスト実行結果
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
|
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
|
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。