[三流君]
[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系の→[掲示板]←を覗く、質問を書き込む
評価・感想
ページフッター(リンクや広告など)
[三流君(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に流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・