【问题标题】:A bug in IE prevents my VBA macro from runningIE 中的一个错误阻止我的 VBA 宏运行
【发布时间】:2018-09-06 08:41:07
【问题描述】:

我有一个 VBA 宏,用于从过去几个月运行良好的网页中获取数据。今天早上它停止工作了。问题是当我单击按钮提交表单时,什么也没有发生。我试图在没有自动化的情况下手动单击按钮,但仍然没有任何反应。

我查了一下,发现了这个描述问题的旧线程: IE11-Only Submit Bug.

因此,这似乎是 IE 的已知问题,但这对我没有多大帮助。有什么建议可以让我的宏再次运行吗?我尝试阅读的每个教程都使用 IE 进行自动化,所以我被困在这里。

【问题讨论】:

  • 请问重现此问题的代码在哪里?
  • 我没有发布任何代码,因为似乎问题出在 IE 上,如链接中所述:“当表单只有输入元素而没有名称属性(或没有输入元素)时,就会出现问题。 "有没有办法在不使用 Internet Explorer 的情况下使用 VBA 来删除数据?
  • 是的....这就是为什么我要你的代码。查看 URL 并从页面中了解您的目标。也许我们可以使用该链接中的修复方法之一。
  • 我认为你唯一的选择是使用 selenium VBA
  • @QHarr 用 IE 打开此链接(对不起,一切都是希伯来语...)mypost.israelpost.co.il/… 在搜索框中输入一些内容并尝试单击红色按钮 - 你会看到它没有响应(您至少应该收到一条错误消息)。如果有办法手动让这个按钮工作,我相信我可以从那里得到它。如果您仍然需要查看代码,我也会发布它。

标签: javascript vba internet-explorer web-scraping


【解决方案1】:

以下工作使用 Chrome 和 selenium basic。安装 selenium basic 后,您需要转到 VBE>Tools>References 并添加对 Selenium Type Library 的引用。然后,您从等式中删除了 IE。 Selenium basic 支持许多其他浏览器,包括 FireFox 和 Opera。

Option Explicit
Public Sub EnterInfo()
    Dim d As WebDriver, ele As Object, t As Date
    Set d = New ChromeDriver
    Const URL = "https://mypost.israelpost.co.il/%D7%9E%D7%A2%D7%A7%D7%91-%D7%9E%D7%A9%D7%9C%D7%95%D7%97%D7%99%D7%9D"
    Const WAIT_TIME_SECS As Long = 10

    With d
        .Start "Chrome"
        .get URL

        With .FindElementById("ItemTraceForm")
            .FindElementById("ItemCode").SendKeys 55671234
            .FindElementById("btn-ItemCode").Click
            t = Timer
            Do
                DoEvents
                If Timer - t > WAIT_TIME_SECS Then Exit Do
                Set ele = .FindElementById("result", timeout:=3000)
            Loop While ele.Text = vbNullString
            Debug.Print ele.Text
        End With

        'Other code....
        Stop                                     '<=Delete me later
        .Quit
    End With
End Sub

【讨论】:

  • 从等式中删除 IE 正是我所需要的。我下载了 selenium basic,我应该参考哪个文件?这个图书馆在哪里?
  • selenium basic 将提示安装,然后打开 Visual Basic 编辑器(在其中键入代码)并在顶部转到工具 > 参考 > 并在出现的框中向下滚动,直到找到 Selenium 类型库并选中该框。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 2016-07-21
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多