如何为queryselector优化Excel VBA编码在脚本中选择修改的URL
我尝试了下面的代码。运行的大部分时间都被困在如何为queryselector优化Excel VBA编码在脚本中选择修改的URL,excel,vba,web-scraping,lowercase,queryselector,Excel,Vba,Web Scraping,Lowercase,Queryselector,我尝试了下面的代码。运行的大部分时间都被困在中,错误转到0,后续步骤.firevent(“onchange”)没有成功。也许有某种方法可以更好地优化流程。请帮帮我,谢谢你 Public Sub makeselections() Dim ie As New InternetExplorer, var As String, ele As Object var = ThisWorkbook.Worksheets("Sheet2").Cells(1, 1).value With ie .Visib
中,错误转到0
,后续步骤.firevent(“onchange”)
没有成功。也许有某种方法可以更好地优化流程。请帮帮我,谢谢你
Public Sub makeselections()
Dim ie As New InternetExplorer, var As String, ele As Object
var = ThisWorkbook.Worksheets("Sheet2").Cells(1, 1).value
With ie
.Visible = True
.Navigate2 "https://www.marketwatch.com/investing/stock/" & var & "/financials"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
.querySelector("#autocomplete_input").value = var
.querySelector("#investing_ac_button").Click
End With
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
Do
On Error Resume Next
Set ele = .querySelector("[value^='/investing/stock/" & LCase(var) & "/financials/Income/quarter']")
On Error GoTo 0
Loop While ele Is Nothing
.querySelector("[value^='/investing/stock/" & LCase(var) & "/financials/Income/quarter']").Selected = True
.querySelector(".financials select").FireEvent "onchange"
End With
End With
End Sub
Public-Sub-makeselections()
Dim ie作为新的InternetExplorer,var作为字符串,ele作为对象
var=此工作簿。工作表(“Sheet2”)。单元格(1,1)。值
与ie
.Visible=True
.导航2“https://www.marketwatch.com/investing/stock/“&var&”/financials”
当.Busy或.readyState<4:DoEvents:Wend时
随附.文件
.querySelector(“#自动完成输入”).value=var
.querySelector(“投资交流按钮”)。单击
以
当.Busy或.readyState<4:DoEvents:Wend时
随附.文件
做
出错时继续下一步
Set ele=.querySelector(“[value^='/investing/stock/”&LCase(var)&“/financials/Income/quarter']”)
错误转到0
循环,而ele什么都不是
.querySelector(“[value^='/investing/stock/”&LCase(var)&“/financials/Income/quarter']”)。Selected=True
.querySelector(“.financials select”).FireEvent“onchange”
以
以
端接头
它可能被卡住了,因为ele什么都没有,即没有找到ticker,或者至少没有找到href值。使用定时循环允许退出
Option Explicit
Public Sub MakeSelections()
Dim ie As New InternetExplorer, var As String, ele As Object, t As Date
Const MAX_WAIT_SEC As Long = 10
var = ThisWorkbook.Worksheets("Sheet2").Cells(1, 1).Value
With ie
.Visible = True
.Navigate2 "https://www.marketwatch.com/investing/stock/" & var & "/financials"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
.querySelector("#autocomplete_input").Value = var
.querySelector("#investing_ac_button").Click
End With
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
t = Timer
Do
On Error Resume Next
Set ele = .querySelector("[value$='quarter']")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While ele Is Nothing
If ele Is Nothing Then Exit Sub
ele.Selected = True
.querySelector(".financials select").FireEvent "onchange"
End With
End With
End Sub
选项显式
公共子生成选项()
Dim ie作为新的InternetExplorer,var作为字符串,ele作为对象,t作为日期
常量最大等待时间=10秒
var=此工作簿。工作表(“Sheet2”)。单元格(1,1)。值
与ie
.Visible=True
.导航2“https://www.marketwatch.com/investing/stock/“&var&”/financials”
当.Busy或.readyState<4:DoEvents:Wend时
随附.文件
.querySelector(“#自动完成输入”).Value=var
.querySelector(“投资交流按钮”)。单击
以
当.Busy或.readyState<4:DoEvents:Wend时
随附.文件
t=计时器
做
出错时继续下一步
Set ele=.querySelector(“[value$='quarter']”)
错误转到0
如果定时器-t>最大等待时间,则退出Do
循环,而ele什么都不是
如果ele为空,则退出Sub
ele.Selected=True
.querySelector(“.financials select”).FireEvent“onchange”
以
以
端接头
还请提供var的值,因为它有助于调试。感谢HQarr的回复。我试过“ele”总是没什么用,也不适用于季度财务报告。但问题已经解决了。酷。当ele为空时,请提供var的值。var的值始终以单元格(1,1)为单位。ele仍然为空,然后退出sub。是的,但我希望在ele为空时使用一个特定的值进行测试。例如,我用FB测试没有问题。你对哪个股票行情有问题?