【问题标题】:VBA IE 11 RuntimeVBA IE 11 运行时
【发布时间】:2015-03-10 02:18:21
【问题描述】:

我之前在 IE 11 中编写过 VBA,并且能够解决问题,但在此我不断收到错误 91 或错误 424。虽然有时它可以完美运行。

很遗憾,由于受密码保护,我无法分享确切的网站,但我提供了相关的源代码。

我做选项显式,所以我的变量应该没有问题。

这些都是我尝试用昨天的日期填充框的所有不同方法,但它们都不起作用。

html.getElementById("begin")(1).Value = Format(Date - 1, "mm/dd/yyyy") '<-error 91

Set StartDate = html.getElementById("begin")  ‘<- Error 424 or Erorr 80010108
Set EndDate = html.getElementById("end")
Set CampaignID = html.getElementById("campaign_id")

这是我正在尝试的 4 种不同的方法,但它们都会定期工作。

StartDate.Item(0).Value = Format(Date - 1, "mm/dd/yyyy")  ‘<-Error 91
StartDate.Value = Format(Date - 1, "mm/dd/yyyy")
StartDate.Value(0) = Format(Date - 1, "mm/dd/yyyy")
Set StartDate(0).Value = Format(Date - 1, "mm/dd/yyyy

源代码:

<div class="row form-group">
<div class="col-xs-12">
        <div class="row">
            <div class="pull-left text-left" style="width:115px;margin-left:20px">
                <label for="">From :</label>
            </div>
            div class="col-xs-3">
            <input type="text" name="begin" value="" class="form-control input-sm datepicker" id="begin" />
            </div>
            <div class="col-xs-1 text-right">
                <label for="">To :</label>
            </div>
            <div class="col-xs-3">
            <input type="text" name="end" value="" class="form-control input-sm datepicker" id="end" />
            </div>
        </div>
    </div>
</div>

【问题讨论】:

  • 这个 VBA 是在另一个主机中(例如 Word/Excel/等),还是在 HTML 本身的 &lt;script&gt; 块中运行的 VBScript?
  • getElementById() 返回单个元素,因此不要尝试将返回值视为集合。 Set StartDate = html.getElementById("begin") 应该在页面完全加载且完整的情况下工作,并且 html 代表一个 Document 对象。显示更多代码可能会有所帮助,包括相关的变量声明。
  • Dai - 我在 Excel 中运行它。还有蒂姆,谢谢你的指点!我无法在网上找到太多关于差异的信息,但经过更多实验后,我明白你的意思了。

标签: excel vba internet-explorer-11


【解决方案1】:

我想通了。

我登录后正在刷新页面。这会重置权限并阻止我更改任何文本框。不知道为什么,但这是问题的一半。

然后,我将变量编辑更改为在页面上运行整个“输入”列表,如下所示:

    Dim CampaignId, StartDate, EndDate, RunReport As Object

    Set StartDate = appIE.Document.getelementbyid("begin")
    Set EndDate = appIE.Document.getelementbyid("end")
    Set CampaignId = appIE.Document.getelementbyid("campaign_id")
    Set RunReport = appIE.Document.getElementsByName("_action_report")

    ButtonNum = 0
    Set objCollection = appIE.Document.getElementsByTagName("input")
    While ButtonNum < objCollection.Length
        If objCollection(ButtonNum).Name = "begin" Or _
        objCollection(ButtonNum).Name = "end" Then
            Set objElement = objCollection(ButtonNum)
            objCollection(ButtonNum).Value = Format(Date - 1, "mm/dd/yyyy")
        End If
        ButtonNum = ButtonNum + 1
    Wend

这样在页面上找到了getElementById失败的按钮。

感谢收看!

【讨论】:

    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 2020-06-05
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2019-02-15
    相关资源
    最近更新 更多