同じページでgetElementsを複数回使用する
タイトルが文字数の関係でおかしいのですが
エクセルVBAで IEのHPに 値を代入して、送信するのですが
同じページで oObjDoc.getElementsByName()やoObjDoc.getElementsByID()などで、値を代入したいのですが、この構文の2回目の所で エラ検出の debugに 「書き込めない」 などのエラーが出ます。(当然、実際もスルーされます)
初期化がまずいのか 判断しかねています。
一般的なID、PSW代入ページから来ました
Sleep 500
Set oObjDoc = Nothing
Set pitem = Nothing
Set oObjDoc = objIE.document
Set pitem = oObjDoc.getElementById("order_type")
value = "通常注文" 実際は3パターン
Dim order As Object
For Each order In pitem
If InStr(1, order.innerText, value) > 0 Then
pitem.value = order.value
Exit For
End If
Next
pitem.Click
Set pitem = Nothing
Sleep 500
id = "変更" '上記の入力を確定させるためだと思う 変更 クリック
Set pitem = oObjDoc.getElementById(id)
For Each pitem In objIE.document.getElementsByTagName("input")
If pitem.value = id Then
Exit For
End If
Next
pitem.Click
'オーダーの内容
If TradeForm.ordertype_btn1 = True Then
value = "3"
Else
value = "1"
End If
Set aradio = oObjDoc.getElementsByName("side")
Debug.Print aradio.Length
For i = 0 To aradio.Length - 1
Debug.Print i
Debug.Print aradio(i).Name
2回目で エラー70 書き込みできません。
Debug.Print aradio(i).value
If "side" = aradio(i).Name And aradio(i).value = value Then
aradio(i).Checked = True
Exit For
End If
Next
Set pitem = Nothing
で、aradio.Length は 2を返して Set aradio = oObjDoc.getElementsByName("side")
はHP内容と一致、動作しているようです
で、1回まわって 2回目(これが答えなのですが)の i=1 で 次
aradio(i).Name が 取れません。
debug.printは
2
0
side
3
1
ところが
前の
id = "変更" '変更 クリック
Set pitem = oObjDoc.getElementById(id)
を 全部レムれば プログラムは 通ります。
debug.print が 書き込めない と言うエラーも 今まで始めてみました。
どれかの初期化が 抜けているのでしょうか
よろしくどうぞ
お礼
ご返答ありがとうございます。 トゥルースリーパですか。値段が上の分やはり上質なんですかね。