2014-01-09 187 views
0

當excel VBA代碼將值傳遞給IEobject時,我正在面臨運行時間Error 91。 對於一組15次迭代來說,我在同一個地方遇到了3-4次錯誤。Excel vba中的間歇性VBA運行時錯誤91與IE

錯誤是沒有看到,當我手動(F8)運行它。我增加了延遲,但徒勞無功。

Acct_name字段保持灰顯狀態,直到貨幣匯入。 (「company」)。document.forms(「account」)。document.all(「currency」).Value =「USD」IE.document.frames(「company」)。document。形式( 「賬戶」)。的document.all( 「貨幣」).fireevent( 「的onblur」)

...延緩這裏

DO而IE.document.frames( 「公司」)。 document.all(「acct_name」).Readystate <>「complete」'間歇運行時間錯誤91 循環

IE.document.frames(「company」)。document .forms(「account」)。document.all(「acct_name」).Value =「abc」'間歇運行時間錯誤91

+0

該錯誤將意味着您試圖獲取的元素不存在。它使用F8運行表明計時問題(是加載後動態創建的頁面的一部分?)也許你可以顯示更多的當前代碼。 –

+0

謝謝你的答覆。我試圖查看的頁面有框架,當我通過代碼在字段中輸入值時,它起作用。但有時我得到運行時錯誤91:對象需要。 例如:IE.document.getElementById(「account_frame」)。document。 getElementById(「account_name」)。Value =「abc」 如果發生錯誤,代碼會中斷,當我手動(F8)運行它時,將看不到錯誤。我試過以下 1)\t如@santhosh建議的那樣添加延遲。 2)\t使用「On error resume next」。即使這條線出現在錯誤行的正上方,也會顯示錯誤。 請引導我在這裏。 – kartheek

+0

嘗試檢查包含您要訪問的文檔的框架的readyState:它與主頁面的readyState不同。 –

回答

0

正如Tim所建議的其計時問題,您可能會延遲5秒並查看輸出。

load: 
Do While IE.readystate <> 4: DoEvents: Loop 
Application.Wait Now() + TimeSerial(0, 0, 5) ' delay of 5 seconds 

Set account = IE.document.getElementById("account_name") 
If account Is Nothing Then GoTo load 
account.Value = "abc"