ブラウザの表示内容、チェックボックスのチェック済みか?から処理を制御したいのですが、
うまくいきません。
input type="checkbox" name="flag[0]" value="1" disabled="disabled"
input type="checkbox" name="flag[1]" value="1" checked="checked"
というチェックボックスがあり、チェックされているかを取得したいのです。
値を入れる際は
objIE.Document.Forms(0).Item("flag[1]").Checked = true
でチェックがはいるので
chk = objIE.Document.Forms(0).Item("flag[1]").Checked
でchkにtrueが入ると思ってやっていますができません。
あまり参考になるサイトがなかったので何か情報ありますでしょうか?
少し気になったので、
テストページ http://may2012.s2009mmdd.com/test0502.html を作成して、テストしてみました。
Excel2007 IE9 OS:Vista で テスト http://www.youtube.com/watch?v=vl2-_0NZPMA
私の環境では、うまく動作してしまったので、
原因がわからないのですが・・・
ソースは下記のような感じです。
VBA側
Option Explicit Sub ie_test() 'IEテストする。 'IEの起動 Dim objIE As Object '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "http://may2012.s2009mmdd.com/test0502.html" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 DoEvents '重いので嫌いな人居るけど。 Wend 'チェックボックスにセットする。 objIE.Document.Forms(0).Item("flag[1]").Checked = False objIE.Document.Forms(0).Item("flag[2]").Checked = True objIE.Document.Forms(0).Item("flag[3]").Checked = True objIE.Document.Forms(0).Item("flag[0]").Checked = True '値の取り出し を テストする Dim chk As Boolean Dim n As Integer For n = 0 To 3 chk = objIE.Document.Forms(0).Item("flag[" & n & "]").Checked MsgBox "チェックボックス[" & n & "]の値は" & chk Next n End Sub
HTML
<h1>チェックボックスのテスト 0502</h1> <FORM ACTION="http://www.ken3.org/cgi-bin/test/test041-1.asp" METHOD="GET"> <font color="blue">TYPE="text" テキストの入力テスト</font><br> お名前:<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望"><br> E-Mail:<INPUT TYPE="text" SIZE="20" NAME="EMAIL" VALUE="****@**.co.jp"><br> <br> <b><font color="blue">TYPE="CHECKBOX" チェックボックスの入力テスト</font></b><br> チェックを入れてください<br> <input type="checkbox" name="flag[0]" value="1" disabled="disabled">0<br> <input type="checkbox" name="flag[1]" value="1" checked="checked">1<br> <input type="checkbox" name="flag[2]" value="1">2<br> <input type="checkbox" name="flag[3]" value="1">3<br> <br> <br> <font color="blue">送信ボタン</font><br> <INPUT TYPE="submit" NAME="btn1" VALUE="送信1"> <INPUT TYPE="submit" NAME="btn2" VALUE="送信2"> <INPUT TYPE="reset" VALUE="入力し直す"> </FORM>
自分に都合のよいテストですが、こんな感じで動いてしまいました。
予想していた
[]付きの名前もそのまま使えるし、
disabled="disabled"
も関係ないみたいです?う~ん、、、
これだと、原因がわからないのですが、解決の糸口となれば幸いです・・・
ウォッチ式で他のプロパティも含め、変化する所がないか探してみてはいかがでしょう。
http://www.ken3.org/vba/watch-stop.html
少し気になったので、
テストページ http://may2012.s2009mmdd.com/test0502.html を作成して、テストしてみました。
Excel2007 IE9 OS:Vista で テスト http://www.youtube.com/watch?v=vl2-_0NZPMA
私の環境では、うまく動作してしまったので、
原因がわからないのですが・・・
ソースは下記のような感じです。
VBA側
Option Explicit Sub ie_test() 'IEテストする。 'IEの起動 Dim objIE As Object '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "http://may2012.s2009mmdd.com/test0502.html" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 DoEvents '重いので嫌いな人居るけど。 Wend 'チェックボックスにセットする。 objIE.Document.Forms(0).Item("flag[1]").Checked = False objIE.Document.Forms(0).Item("flag[2]").Checked = True objIE.Document.Forms(0).Item("flag[3]").Checked = True objIE.Document.Forms(0).Item("flag[0]").Checked = True '値の取り出し を テストする Dim chk As Boolean Dim n As Integer For n = 0 To 3 chk = objIE.Document.Forms(0).Item("flag[" & n & "]").Checked MsgBox "チェックボックス[" & n & "]の値は" & chk Next n End Sub
HTML
<h1>チェックボックスのテスト 0502</h1> <FORM ACTION="http://www.ken3.org/cgi-bin/test/test041-1.asp" METHOD="GET"> <font color="blue">TYPE="text" テキストの入力テスト</font><br> お名前:<INPUT TYPE="text" SIZE="20" NAME="USER-NAME" VALUE="匿名希望"><br> E-Mail:<INPUT TYPE="text" SIZE="20" NAME="EMAIL" VALUE="****@**.co.jp"><br> <br> <b><font color="blue">TYPE="CHECKBOX" チェックボックスの入力テスト</font></b><br> チェックを入れてください<br> <input type="checkbox" name="flag[0]" value="1" disabled="disabled">0<br> <input type="checkbox" name="flag[1]" value="1" checked="checked">1<br> <input type="checkbox" name="flag[2]" value="1">2<br> <input type="checkbox" name="flag[3]" value="1">3<br> <br> <br> <font color="blue">送信ボタン</font><br> <INPUT TYPE="submit" NAME="btn1" VALUE="送信1"> <INPUT TYPE="submit" NAME="btn2" VALUE="送信2"> <INPUT TYPE="reset" VALUE="入力し直す"> </FORM>
自分に都合のよいテストですが、こんな感じで動いてしまいました。
予想していた
[]付きの名前もそのまま使えるし、
disabled="disabled"
も関係ないみたいです?う~ん、、、
これだと、原因がわからないのですが、解決の糸口となれば幸いです・・・
ありがとうございます。いただいたものをベースに再度プログラムしたら無事に解決しました。
Dim chk As Boolean
これかもしれません。
宣言しなければなんでもいけると思っていました。。素人すぎました。
ありがとうございます。いただいたものをベースに再度プログラムしたら無事に解決しました。
2012/05/03 10:21:26Dim chk As Boolean
これかもしれません。
宣言しなければなんでもいけると思っていました。。素人すぎました。