![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
タイトルが文字数の関係でおかしいのですが
エクセル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 が 書き込めない と言うエラーも 今まで始めてみました。
どれかの初期化が 抜けているのでしょうか
よろしくどうぞ
No.1ベストアンサー
- 回答日時:
私もちょくちょく「書き込めないエラー」が発生しますので詳しい方のお答えが欲しいです(おいおいw)。
ただ、しばらくすると動くこともあるので、解決法がよく分かっていません。
なんとなく体感では
・IEを複数動かしたり、他のIE操作プログラムを動かしたあとに起きやすい
・ステップ実行だと何故かうまくいくことがある
・SleepやWaitの時間をしっかり取る
Set objshell = CreateObject("Shell.Application")
Set objIE = objshell.Windows.Item(objshell.Windows.Count - 1)
このような瞬間に、オブジェクトをうまく取れていない時があるのではないか?
(でもその場合だとnothingになるはずですよね…)
--
今回のコード、実行してないのですけど、
この2行ヘンじゃないですか?
Set pitem = oObjDoc.getElementById(id)
For Each pitem In objIE.document.getElementsByTagName("input")
1行目がいらない気が…。
これだと、「inputタグの中の全てのid」となります。
inputタグの中の全てのオブジェクトなら分かります。
そして、ページのidはそもそも一意ですし、そのあたりのコードは
objIE.document.getElementByID("変更").click
だけでいいような気が…。
外していたら申し訳ない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
innerHTML内では改行は禁止?
-
インラインフレームから親ウィ...
-
クリックさせたいが、click()が...
-
formのfileの値をhiddenでも持...
-
複数のテキストボックスの値の...
-
追加ボタンを押した際に ok ボ...
-
javascriptでクイズ
-
クリックされた罫表セルの行番...
-
複数Formから値を取得するやりかた
-
特定<table>内の<td>の色を変える
-
slickのレスポンシブ > center...
-
Nameは配列で、チェックされた...
-
submitした値を返したい
-
jQueryでクリックされたテーブ...
-
Cookieに保存されない
-
同一nameの input type="text"...
-
Selectの中身をfor文で入れる
-
Selectボックスの幅を自動で広...
-
name属性が同じフォームが複数...
-
プルダウン 項目が多いので先頭...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
追加ボタンを押した際に ok ボ...
-
クリックさせたいが、click()が...
-
onclickが動作しない
-
ボタンかリンクをクリックする...
-
javaScriptの変数をJavaの変数...
-
formのfileの値をhiddenでも持...
-
JSのボタンを複数う使うには
-
JavaScriptのfileオブジェクト...
-
innerHTML内では改行は禁止?
-
開いた子ウィンドウにあるボタ...
-
BackSpaceしたい(QNo.2734284の...
-
VB.NETで<Input>タグ、<text...
-
オンクリックで現在時刻の取得→...
-
JQueryでfunctionに引数としてI...
-
複数のテキストボックスの値の...
-
onClickがinput type="image"だ...
-
クリック→テキストボックスに追加
-
Javascriptで'(シングルクォー...
-
テキストフィールド未入力の場...
おすすめ情報