我正在嘗試使用我的 VBA 腳本從 HTML 頁面單擊下拉選項,但是我正在努力解決如何執行此操作。
基本上我的代碼會打開頁面,輸入一些變數,然后我想從串列中選擇將其匯出為 PDF。
Dim oIE As Object
Dim appIE As InternetExplorerMedium
Dim XMLHTTP As Object
Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Dim Disbuttons As Object
Set appIE = New InternetExplorerMedium
With appIE
.Visible = True
.navigate "WEBPAGE"
End With
Do
DoEvents
Loop Until appIE.readyState = 4
appIE.document.getElementById("ctl32_ctl04_ctl03_txtValue").Value = "03/10/2022"
appIE.document.getElementById("ctl32_ctl04_ctl05_txtValue").Value = "04/10/2022"
appIE.document.getElementById("ctl32_ctl04_ctl07_divDropDown_ctl00").Value = "21669"
appIE.document.getElementById("ctl32_ctl04_ctl00").Click
Application.Wait (Now TimeValue("0:00:10"))
appIE.document.getElementById("ctl32_ctl05_ctl04_ctl00_Menu").Click
appIE.document.querySelector("[title='PDF']").Click
不作業的部分是;
appIE.document.getElementById("ctl32_ctl05_ctl04_ctl00_Menu").Click
appIE.document.querySelector("[title='PDF']").Click
下拉串列的 HTML 是:
<DIV id=ctl32_ctl05_ctl04_ctl00_Menu class=MenuBarBkGnd style="POSITION: absolute; PADDING-BOTTOM: 1px; PADDING-TOP: 1px; PADDING-LEFT: 1px; Z-INDEX: 1; DISPLAY: none; PADDING-RIGHT: 1px; VISIBILITY: hidden" _oldDisplayMode="block"><DIV class=DisabledButton><A onclick="$find('ctl32').exportReport('XML');" title="XML file with report data" class=ActiveLink style="TEXT-DECORATION: none; WHITE-SPACE: nowrap; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; PADDING-LEFT: 32px; DISPLAY: block; PADDING-RIGHT: 8px" href="javascript:void(0)" alt="XML file with report data" _selected="false">XML file with report data</A> </DIV>
<DIV class=DisabledButton><A onclick="$find('ctl32').exportReport('CSV');" title="CSV (comma delimited)" class=ActiveLink style="TEXT-DECORATION: none; WHITE-SPACE: nowrap; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; PADDING-LEFT: 32px; DISPLAY: block; PADDING-RIGHT: 8px" href="javascript:void(0)" alt="CSV (comma delimited)" _selected="false">CSV (comma delimited)</A> </DIV>
<DIV class=DisabledButton><A onclick="$find('ctl32').exportReport('PDF');" title=PDF class=ActiveLink style="TEXT-DECORATION: none; WHITE-SPACE: nowrap; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; PADDING-LEFT: 32px; DISPLAY: block; PADDING-RIGHT: 8px" href="javascript:void(0)" alt="PDF" _selected="false">PDF</A> </DIV>
<DIV class=HoverButton><A onclick="$find('ctl32').exportReport('WORDOPENXML');" title=Word class=ActiveLink style="TEXT-DECORATION: none; WHITE-SPACE: nowrap; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; PADDING-LEFT: 32px; DISPLAY: block; PADDING-RIGHT: 8px" href="javascript:void(0)" alt="Word" _selected="true">Word</A> </DIV>
<DIV style="HEIGHT: 149px; WIDTH: 26px; POSITION: absolute; LEFT: 0px; FILTER: alpha(opacity=5); Z-INDEX: -1; TOP: 0px; BACKGROUND-COLOR: black; opacity: 0.05"></DIV></DIV>
特別是 exportReport('PDF') 是感興趣的一個。
對此以及我哪里出錯的任何建議將不勝感激。
uj5u.com熱心網友回復:
title可能不是搜索的最佳屬性(在整個檔案的背景關系中),它不能保證是唯一的,或者第一個實體是您要查找的元素。
Dim Menu As Object
Dim Item As Object
Set Menu = appIE.document.getElementById("ctl32_ctl05_ctl04_ctl00_Menu")
If Not Menu Is Nothing Then
Set Item = Menu.querySelector("div[title=PDF]")
If Item Is Nothing Then
Debug.Print "couldnt find item"
Else
Item.Click
End If
Else
Debug.Print "couldnt find menu"
End If
查看 HTML,您可能可以通過直接呼叫匯出函式來跳過所有這些。(理論上以下應該有效)
appIE.Document.parentWindow.execScript "$find('ctrl32').exportReport('PDF');"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/519614.html
標籤:html擅长vba
