【问题标题】:vba html dropdown without options没有选项的vba html下拉列表
【发布时间】:2014-04-02 23:29:15
【问题描述】:

我正在尝试使用 VBA 访问网站并下载一些信息。网站中有一些下拉框,需要先选中这些下拉框,然后才能单击提交按钮。我找到了其中一个框,但另一个框是日期,在 html 中没有选项,即使下拉列表中填充了 YYYY MMM 可以追溯到几年前。我发现一段 html 似乎是填充下拉列表的函数。我当然不是 html 专家,所以这是我的最佳猜测。

以下是下拉列表的html:

<td valign="top">
  <select name="dateSelect" id="dateSelect" ></select>
</td>

填充下拉列表的函数如下所示:

var dateSelect = document.getElementById("dateSelect");
     //sel value = YYYYMMM 
     var dateYear = dateSelect.value.substr(0, 4)
     var dateMonth = dateSelect.value.substr(5)
     var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
     var years = new Array()
     var d = new Date();
     var startYear = 0;
     if (d.getYear() < 2000)
       startYear = d.getYear() + 1900;
     else
       startYear = d.getYear();
       for (var a = startYear; a >= 2007; a--) {
           years[startYear - a] = a;
       }
     function fillselboxes(theDate) {
       var d = new Date();
       theDate = new Date(theDate);
       var dateSelect = document.getElementById("dateSelect");
       for (var a = 0; a < years.length; a++) {
          for (var b = months.length - 1; b >= 0; b--) {
             addOption(dateSelect, years[a] + " " + months[b], years[a] + "_" + (b + 1));
          }
       }
       dateSelect.value = years[startYear - theDate.getFullYear()] + "_" + (theDate.getMonth() + 1);
   }

在我的宏中,我想从下拉列表中选择上个月。作为菜鸟,我唯一能想到的尝试是:

Dim ie as InternetExplorer
Set ie = New InternetExplorer
ie.Visible = True

ie.navigate "redacted"

Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop

ie.getElementById("dateselect").Value = Format(DateSerial(Year(Date), Month(Date) - 1, 1), "YYYY MMM")

当我尝试这样做时,它给了我一个运行时错误“438”:对象不支持此属性或方法。

【问题讨论】:

  • 您的某些行缺少分号。它们不是严格要求的,但它们可以帮助避免未来的错误。

标签: html vba internet-explorer


【解决方案1】:

除了一行代码之外,您还需要提供更多代码,什么是 IE,它是 IE 文档还是浏览器?猜测几个部分,但答案在下面

'ie - assuming this is the browser
Dim hElem
hElem = ie.Document.getElementsByName("dateselect")
hElem.selectedIndex = hElem.Length - 1

【讨论】:

  • 是的,即是浏览器。我编辑了我的问题以显示更多代码。最终起作用的代码是:Set hElem = ie.document.getelementbyid("dateselect")
猜你喜欢
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多