Excel 2010 と Internet Explorer 8 および Vista で vba を使用しています。以下のコードは、リモート Web サイトに移動してフォームを投稿するために機能します。結果のページで、コードは [見積もりを取得] ボタンをクリックする必要があります。代わりに、「オブジェクト変数またはブロック変数が設定されていません」というエラーが表示されます。コード内で強調表示されている問題の行は、「estimate = ieApp.document.getElementById("btnRequestEstimates")」です。
問題の一部は、機能していないボタンがフォームの一部ではない送信ボタンであることにあると思います。2番目のボタンをクリックする前に変数をリセットする必要があるかどうかも疑問です。エラー メッセージは、これが修飾の問題であることを示していますが、この状況で要素を修飾するのはかなり標準的な方法だと思います。これらは私が役に立たなかったいくつかのことです。問題が何であるかはよくわかりません。
Sub btn_version()
Dim ieApp As Object
Dim ieDoc As Object
Dim ieForm As Object
Dim ieObj As Object
Dim URL As String
Dim estimate As Object
URL = "http://www.craft-e-corner.com/p-2688-new-testament-cricut-cartridge.aspx"
Set ieApp = CreateObject("InternetExplorer.Application")
ieApp.Visible = True
ieApp.navigate URL
While ieApp.Busy Or ieApp.readyState <> 4: DoEvents: Wend
Set ieDoc = ieApp.document
Set ieForm = ieDoc.forms(1)
For Each ieObj In ieForm.Elements
If ieObj.ClassName = "AddToCartButton" Then
ieObj.Click
End If
Next ieObj
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
While ieApp.Busy Or ieApp.readyState <> 4: DoEvents: Wend
estimate = ieApp.document.getElementById("btnRequestEstimates")
estimate.submit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub