IE Automation-VBA错误-运行时错误70:权限被拒绝

问题描述

朋友,我是VBA的新手,在这里我试图从内部网站抓取数据。过程如下:在A3到End列中输入的序列号很少。该宏应该导航到URL->从excel中选择序列号->在搜索字段中输入并单击搜索。将结果填充到页面上后,它将抓取特定值并填充到excel工作表中。

页面打开得很好,可以从excel中选择数据,当宏读取表单元格时,它会给出 运行时70错误 。下面是我的代码供参考。非常感谢您提供修复帮助。

utf-8

解决方法

HTMLDoc.getElementById("submitAction").Click可能会导致页面刷新,使所有引用的元素变得陈旧。当执行可能/已知会导致页面刷新/更新的操作时,请尝试始终使用ie.document而不是将其设置为变量。这是导致权限被拒绝错误的常见原因。

您的If End If应该是超时的循环。您只需要一个ie.visible = True。我认为您很少将Visible设置为false。如果您打算向用户隐藏它,则应该从一开始就这样做,除非它会干扰功能。

Application.ScreenUpdating = True没有意义,因为它从未在此子菜单中关闭。如果调用了此子项,则在循环外仅需要一次。您重复的ActiveCell.Offset(0,1).Activate可以与Select Case一起使用循环,并直接设置值而无需激活。重复行Do While ie.READYSTATE = 4: DoEvents: Loop没有用。

您可以使用Find的范围方法来确定第1列中发生0的行,而不用遍历该列。并测试确定是否找到它,并且> = 3。

,

此错误表示试图写入受写保护的磁盘或访问锁定的文件。您可以检查是否需要特殊权限才能访问工作表。有关详细的原因和解决方案,请参阅this doc

此外,您还可以参考我的工作示例以读取VBA中的单元格值:

Sub LOADIE()
    Set ieA = CreateObject("InternetExplorer.Application")
    ieA.Visible = True
    ieA.navigate "https://www.bing.com"
    Do Until ieA.readyState = 4
       DoEvents
    Loop
    Set doc = ieA.Document
    Dim tempStr As String
    tempStr = "sb_form_q"
    doc.getElementById(tempStr).Value = ThisWorkbook.Sheets("SheetName").Range("E2").Value
End Sub

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...