2014-01-09 178 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"