[英]Automating a Report: Selecting from a drop down in IE using VBA
我正在嘗試使用VBA自動生成我的報告。 我可以部分地進行日志記錄,但是當涉及到帶有下拉菜單的下一個網頁導航時,我似乎無法掌握它。 我嘗試了多種方法來填寫第一個下拉菜單,即報告類型,但找不到正確的代碼
所有注釋的“'”都是我嘗試過的所有代碼。 由於該網站是客戶網站,因此無法發布。
Sub Get_RawFile()
Dim IE As New InternetExplorer
Dim HTMLDoc As HTMLDocument
Dim addressInput As HTMLInputElement
With IE
.Visible = True
.Navigate ("------------------------")
While IE.Busy Or IE.readyState <> 4: DoEvents: Wend
Set HTMLDoc = IE.document
HTMLDoc.all.UserName.Value = Sheets("Data Dump").Range("A1").Value
HTMLDoc.all.Password.Value = Sheets("Data Dump").Range("B1").Value
HTMLDoc.getElementById("login-btn").Click
While IE.Busy Or IE.readyState <> 4: DoEvents: Wend
'HTMLDoc.getElementByName("ddlReportType")(0).Value = "1"
'Set HTMLDoc = IE.document
'Set evtChange = HTMLDoc.createEvent("HTMLEvents")
'evtChange.initEvent "change", True, False
'Set selectElement = HTMLDoc.getElementById("ddlReportType")
'selectElement.Value = "1" 'Attendance
'selectElement.dispatchEvent evtChange
'Set htmlSelectElem = HTMLDoc.getElementsByTagName("ddlReportType")
'htmlSelectElem.selectedIndex = 1
'Set reporttype = IE.document.getElementById("ddlReportType")
'For i = 1 To reporttype.Options.Length
'If reporttype.Options(i).Text = "Attendance" Then
'reporttype.selectedIndex = i
'Exit For
'End If
'Next i
End With
運行時錯誤“ 438”對象不支持此屬性或方法
此方法.getElementByName
不存在。 它應該是.getElementsByName("Something")
,在這種情況下,該方法將返回其Name
屬性為Something
的元素的集合。
以下內容將訪問Name
屬性為ddlReportType
的元素集合的第一個元素,並將其值設置為1
:
HTMLDoc.getElementsByName("ddlReportType")(0).Value = "1"
話雖如此,您似乎不確定ddlReportType
是什么。
如果它是元素的id
,則該元素應如下所示:
<tagName id="ddlReportType">Something</tagName>
在這種情況下,您應該使用.getElementByID()
方法
如果它是元素的Name
,則該元素應如下所示:
<tagName Name="ddlReportType">Something</tagName>
在這種情況下,您應該使用.getElementsByName()
方法,該方法返回元素的集合。
如果它是元素的Class
,則該元素應如下所示:
<tagName Class="ddlReportType">Something</tagName>
在這種情況下,您應該使用.getElementsByClassName()
方法,該方法返回元素的集合。
最后,我可以肯定地告訴您它不是 Tag Name
因此您絕對不應該使用.getElementsByTagName
方法。
編輯
從編輯原始帖子后提供的圖像中可以明顯看出, ddlReportType
是<select></select>
元素的id
。 所以你應該這樣:
Dim HTMLselect As HTMLSelectElement
Set HTMLselect = HTMLDoc.getElementById("ddlReportType")
HTMLselect.Value = "1"
使用的參考: Microsoft HTML Object Library
(VBE>工具>參考> ...)
這就是選擇下拉選項之一的方法。 要進一步導航,您必須按我認為的某個按鈕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.