[三流君] [VBAで楽しく] [VBA IE 操作]
−−> No.097 InternetExplorer.application操作 .Clickでクリック

InternetExplorer.application操作 .Clickでクリック

メルマガ発行内容

<InternetExplorer.application操作 .Clickでクリック>

どうも、三流プログラマーのKen3です。 今回は、 IE操作で、プログラム側からクリック処理を行ってみます。 何かの参考となれば、幸いです。 ※まだまだ、違法ツールへの道は遠いけどね・・・

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

隣のメルマガ、ASP系で、ログイン処理を作りました。 No.68 DBでユーザー管理、ログイン処理(復習で作成) http://www.ken3.org/backno/backno_asp14.html#68 あとは、個人的なことで、 http://www.ken3.org/etc/okozukai.html で、小金稼ぎ系をやってて、 自動でログインできたらいいなぁ・・と思い、探ってみました。 And だいぶ前に読者から下記のヒントもらっていたので(感謝) In message "リンク クリック", しょうもさん wrote... >[ VBAで楽しくプログラミング No.071 ] 2003/05/06 火曜日 より > >> 読者からの要望は、広告自動クリックソフトだったけど > >その名の通り、Clickメソッドが使えますよ。 >今回も、IHTMLElementオブジェクトを操っています。 >「Microsoft HTML Object Library」参照設定です。 > >'----------- > Dim objElement As IHTMLElement > Dim strTempText As String > > For Each objElement In objIE.Document.all.tags(tagName:="a") > strTempText = objElement.getAttribute _ > (strAttributeName:="href") > Debug.Print strTempText > If InStr(strTempText, "top10") Then > objElement.Click > Exit For > End If > Next ------------ そんな感じの三流君書いてみようポイントが貯まって(←何それ?) 今回の発行となりました。 ※今回の自動ログイン処理、まだまだですが、  応用すれば、1日一回の人気投票システムなどにも応用可能かなぁ。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba097.lzh にtest097-Book.xlsが保存されています。

/* * 2.IEのオブジェクトを作成、操作する */

インターネットエクスプローラー(IE)を起動するには、
Sub ie_test()

    Dim objIE    As Object  'IEオブジェクト参照用

    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")
    
    objIE.Visible = True '見えるようにする(お約束)

End Sub
ExcelやAccessの起動でお世話になっている、 CreateObjectを使用して、 "InternetExplorer.application" を作成してます。 その後、 objIE.Visible = True '見えるようにする(お約束) で、プロパティの可視をTrueにして、表示してます。 で、 http://www.ken3.org/cgi-bin/test/test068.html なんて、ページを表示させるには、 '文字列で指定したURLに飛ぶ objIE.Navigate "http://www.ken3.org/cgi-bin/test/test068.html" と .Navigateメソッドを使用しました。 インターネットエクスプローラーの操作 No.50 IE起動 CreateObject("InternetExplorer.application") No.52 InternetExplorer.application .document.body.innerText No.53 文字列を探す、InStr関数の使い方 http://www.ken3.org/backno/backno_vba11.html#50 No.70 InternetExplorer.application .document.all(0).innerHTML No.71 IE操作 リンク先を取出す .Document.links(i).href http://www.ken3.org/backno/backno_vba15.html#70 も参考にしてください。

/* * 3.データをセットしたい */

http://www.ken3.org/cgi-bin/test/test068.html は、見てもらうとわかるのですが、ログイン処理を行ってます。 HTMLのソースは、IEなら右ボタン・ソース表示などで表示します。 <html> <head> <title>けんぞうのへんてこな世界へようこそ</title> </head> <body bgcolor=#ffffff text=#000000> <center> <h2>けんぞうのへんてこな世界へようこそ</h2> <br> <table bolder=1> <FORM ACTION="login.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="adduser.asp" TARGET="_top">新規ユーザー登録</a><br> </center> </body> </html> です。 このHTMLフォームにデータをセットしたいと思います。 objIE.document.all とドキュメントのオブジェクトがあり、 objIE.document.all.userid.Value = "Ken3" 'ユーザー名 objIE.document.all.pass.Value = "aaa" 'パスワード と、フォームの項目名を使用して、アクセスすることが出来ます。 HTMLのフォームのNAMEがポイントです USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br> Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop と、 .Busyを見て、 読み込み完了まで待つ処理を追加して、 指定HPの表示、ログイン情報の代入を行ってみます。
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"    'パスワード

End Sub
無事、データがセットされました。 ( )

/* * 4.ログインボタンをクリックしてみる */

さてと、無事データがセットされたので、 今度は、自動でログインボタンを押してみたいと思います。 <FORM ACTION="login.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> のボタンには、NAME="btn01"と名前が付いているので、 'データせっとできたので、 'ボタンを押してみる objIE.document.all.btn01.Click 'クリックメソッドを実行 と .Clickのメソッドを実行してみました。 ※HTMLのフォームで、項目にNAME=と付いていたので(付いていれば)、  比較的楽に操作可能です
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
こんな、短いプログラムで、自動ログイン処理が可能です。 ※なんとなく、オールスターの自動投票処理も簡単に出来るかもしれませんね。 データの中身を変えたりして、テストしてみてください。

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

なんとか、動作したけど、エラー処理がまだまだ甘かったりもします。 ホントは、悪魔のささやきは、 サンプルプログラムでテストと言いつつ、 広告をクリックさせて、、ともフト思ったけど、 そこまでしてもなぁ・・と考え直して(笑) 普通の自分のページを使ったログインのサンプルにしました。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba097.lzh にtest097-Book.xlsが保存されています。 なので、安心して、サンプル実行してください。 ※まだ、サンプルファイルに細工して・・までは心は腐っていなかった(笑) なんて、物語を書いてるが、ホントのホントは、 広告クリック作ろうとしたんだけど、 広告の<IFREAM>内の参照(解析)に手間取ったとか? ギク・・なんでバレたの? ボクも自動クリック処理作ろうとしてるからさ(笑) ※たぶんあれだよ、、と思った人も多いと思います。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。

フィードバック

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

評価・感想

No.097を読んだ満足度(評価)は?
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に流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・