如何为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测试没有问题。你对哪个股票行情有问题?