Excel VBAIE11运行时

Excel VBAIE11运行时,excel,vba,internet-explorer-11,Excel,Vba,Internet Explorer 11,我以前在IE 11中编写过VBA,并且能够解决问题,但在这方面我不断得到错误91或错误424。但有时它工作得很完美 不幸的是,我不能分享确切的网站,因为它的密码保护,但我包括相关的源代码 我的选项是显式的,所以我的变量应该没有问题 这些都是我试图用昨天的日期填满盒子的不同方式,但都不起作用 html.getElementById("begin")(1).Value = Format(Date - 1, "mm/dd/yyyy") '<-error 91 Set StartDate = h

我以前在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")
html.getElementById(“begin”)(1).Value=Format(日期-1,“mm/dd/yyyy”)”我猜出来了

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

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

    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
id、StartDate、EndDate、RunReport-As-Object
Set StartDate=appIE.Document.getelementbyid(“开始”)
Set EndDate=appIE.Document.getelementbyid(“结束”)
设置活动id=appIE.Document.getelementbyid(“活动id”)
设置RunReport=appIE.Document.getElementsByName(“\u action\u report”)
钮扣数=0
Set-objCollection=appIE.Document.getElementsByTagName(“输入”)
而钮扣长度
这样可以找到页面上的按钮,其中
getElementById
失败


谢谢你的关注

这是另一台主机(例如Word/Excel/etc)中的VBA,还是在HTML本身的
块中运行的VBScript?
getElementById()
返回单个元素,因此不要尝试将返回值视为集合
Set StartDate=html.getElementById(“begin”)
应该可以工作,前提是页面已完全加载并完成,并且
html
表示文档对象。这可能有助于显示更多的代码,包括相关的变量声明。蒂姆,谢谢你的指点!我在网上找不到太多关于差异的信息,但经过更多的实验,我明白了你的意思。
<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>
    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