人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelのマクロVBAでブラウザ自動で動かすものを作成中です。
ブラウザの表示内容、チェックボックスのチェック済みか?から処理を制御したいのですが、
うまくいきません。

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が入ると思ってやっていますができません。

あまり参考になるサイトがなかったので何か情報ありますでしょうか?

●質問者: tamurad007
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TransFreeBSD

ウォッチ式で他のプロパティも含め、変化する所がないか探してみてはいかがでしょう。
http://www.ken3.org/vba/watch-stop.html


2 ● ken3memo
ベストアンサー

少し気になったので、
テストページ http://may2012.s2009mmdd.com/test0502.html を作成して、テストしてみました。

Excel2007 IE9 OS:Vista で テスト http://www.youtube.com/watch?v=vl2-_0NZPMA
D

私の環境では、うまく動作してしまったので、
原因がわからないのですが・・・

ソースは下記のような感じです。
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"
も関係ないみたいです?う?ん、、、

これだと、原因がわからないのですが、解決の糸口となれば幸いです・・・


tamurad007さんのコメント
ありがとうございます。いただいたものをベースに再度プログラムしたら無事に解決しました。 Dim chk As Boolean これかもしれません。 宣言しなければなんでもいけると思っていました。。素人すぎました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ