[英]Excel VBA: alter url based on cell value
顯然我不知道如何使用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.