簡體   English   中英

Excel VBA:根據單元格值更改URL

[英]Excel VBA: alter url based on cell value

上一篇: VBA:從下拉菜單中選擇以重新加載頁面並抓取數據

顯然我不知道如何使用stackoverflow:我刪除了我的個人資料,以為我正在“靜音”電子郵件更新。 今天才剛剛開始編碼VBA,不太確定我在做什么。 在出色的用戶SIM的幫助下,代碼正在運行。

我試圖進一步修改代碼,以更改Web URL地址,以便它將插入我在單元格J1中放置的任何股票代號。 在這種情況下,我嘗試查找的不僅僅是jpm。

此處的目標是在J1中放入任何股票代號,並將其反映在查詢URL上。 例如:J1將保存AAPL,而.Open命令將是

.Open "POST", "https://www.nasdaq.com/symbol/jpm/historical", False

否則J1將持有WFC,而.Open命令將是

.Open "POST", "https://www.nasdaq.com/symbol/WFC/historical", False

但是,我的嘗試沒有那么熱。 到目前為止,這就是我所擁有的。

Sub Get_Data()
    Dim tabd As Object, trow As Object, r&, c&
    Dim QueryString$, S$

    QueryString = "10y|false|" & Range("J1").Value & "" ''change here the "year" and the "ticker" name as necessary
    ''Set web_url = "https://www.nasdaq.com/symbol/" & Range("J1").Value & "/historical"

    Range("A:F").ClearContents

    With New XMLHTTP
        .Open "POST", "https://www.nasdaq.com/symbol/jpm/historical", False
        ''.Open "POST", "web_url", False
        .setRequestHeader "User-Agent", "IE"
        .setRequestHeader "Content-Type", "application/json"
        .send QueryString
        S = .responseText
    End With
    With New HTMLDocument
        .body.innerHTML = S
        For Each tabd In .getElementById("quotes_content_left_pnlAJAX").getElementsByTagName("table")(0).Rows
            For Each trow In tabd.Cells
                c = c + 1: Cells(r + 1, c) = trow.innerText
            Next trow
            c = 0: r = r + 1
        Next tabd
    End With

End Sub

我注釋掉了無效的部分。

實際上,您的評論部分幾乎是正確的。 由於您正在創建字符串,因此無法使用Set ,並且url中的代碼必須小寫。 另外,您"web_url" Open方法"web_url"作為字符串文字傳遞。

這是您的操作方式:

Sub Get_Data()
    Dim tabd As Object, trow As Object, r&, c&
    Dim QueryString$, S$

    QueryString = "10y|false|" & Range("J1").Value & "" ''change here the "year" and the "ticker" name as necessary
    web_url = "https://www.nasdaq.com/symbol/" & LCase(Range("J1").Value) & "/historical"

    Range("A:F").ClearContents

    With New XMLHTTP
        .Open "POST", web_url, False
        .setRequestHeader "User-Agent", "IE"
        .setRequestHeader "Content-Type", "application/json"
        .send QueryString
        S = .responseText
    End With
    With New HTMLDocument
        .body.innerHTML = S
        For Each tabd In .getElementById("quotes_content_left_pnlAJAX").getElementsByTagName("table")(0).Rows
            For Each trow In tabd.Cells
                c = c + 1: Cells(r + 1, c) = trow.innerText
            Next trow
            c = 0: r = r + 1
        Next tabd
    End With

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM