Excel VBA to activate selectitem in web and go web for data

醉酒当歌 提交于 2021-02-04 08:10:26

问题


I'm very fresh to excel VBA. I tried use all potential solutions in the internet for activate selectitem in web and get data table but it didn't work. My Excel VBA code and Javascript is below.

Sub GetQuarterFinancials()

Dim ie As Object, URL As String

    URL = "https://www.marketwatch.com/investing/stock/aapl/financials"
    Set ie = CreateObject("internetexplorer.application")

With ie
 .Visible = True
 .navigate URL

 Do While .Busy
   DoEvents
 Loop
 Do While .readyState <> 4
   DoEvents
 Loop

  Set ticker = ie.document.getElementById("autocomplete_input")
  ticker.value = "FB"

  .document.getElementById("investing_ac_button").Click
  Application.Wait (Now + TimeValue("00:00:05"))

  Set selectitem = ie.document.getElementsByTagName("select")
  For Each i In selectitem
           i.value = "/investing/stock/msci/financials/income/quarter"
           i.FireEvent ("onchange")
      Next i
 End With
End Sub





    <select style="float:right" onchange="window.location = this.options[selectedIndex].value;">
        <option value="/investing/stock/msci/financials" selected="selected">Annual Financials</option>
        <option value="/investing/stock/msci/financials/income/quarter" >Quarter Financials</option>
    </select>
    <div style="clear:both"></div>
</div>
    <div class="block">
        <h2>Annual Financials for MSCI Inc.</h2>

回答1:


You can use a css attribute = value selector to target the appropriate option from dropdown then select it.

Option Explicit

'VBE > Tools > References:
' Microsoft Internet Controls

Public Sub MakeSelections()
    Dim ie As New InternetExplorer
    With ie
        .Visible = True
        .Navigate2 "https://www.marketwatch.com/investing/stock/aapl/financials"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .querySelector("#autocomplete_input").Value = "FB" 'you could avoid search by adding ticker into url
            .querySelector("#investing_ac_button").Click
        End With

        While .Busy Or .readyState < 4: DoEvents: Wend

        Dim ele As Object
        With .document
            Do
            On Error GoTo 0
            Set ele = .querySelector("[value^='/investing/stock/fb/financials/income/quarter']")
            On Error Resume Next
            Loop While ele Is Nothing
            .querySelector("[value^='/investing/stock/fb/financials/income/quarter']").Selected = True
            .querySelector(".financials select").FireEvent "onchange"
                Stop 'delete me later
        End With
        .Quit
    End With
End Sub


来源:https://stackoverflow.com/questions/58254532/excel-vba-to-activate-selectitem-in-web-and-go-web-for-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!