Excel 如何在VBA代码中插入单元格引用以连接weburl

Excel 如何在VBA代码中插入单元格引用以连接weburl,excel,vba,Excel,Vba,注意:我没有任何编码经验 如何在VBA代码中插入单元格引用以连接到web url 假设在“A1”单元中,我将获得连接的Url。如何在VBA编辑器中连接单元格“A1”而不是固定代码 请帮帮我 我再一次告诉你,我没有任何编码经验。 你能告诉我怎么修改吗。 如果你想测试,我会提供完整的代码 Option Explicit Sub BankNiftyOptionChain() Dim Json As Object Dim webURL As St

注意:我没有任何编码经验

如何在VBA代码中插入单元格引用以连接到web url

假设在“A1”单元中,我将获得连接的Url。如何在VBA编辑器中连接单元格“A1”而不是固定代码

请帮帮我

我再一次告诉你,我没有任何编码经验。 你能告诉我怎么修改吗。 如果你想测试,我会提供完整的代码

    Option Explicit
Sub BankNiftyOptionChain()
        
        Dim Json As Object
        Dim webURL As String, mainString, subString
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        Dim dtArr() As String
        
        webURL = "https://www.nseindia.com/api/option-chain-indices?symbol=BANKNIFTY"
        subString = "Resource not found"
        
FetchAgain:


    With CreateObject("msxml2.xmlhttp")
        .Open "GET", webURL, False
        
        'The following two statements are important to remove cached results.
        
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
        
        .send
        
        mainString = .responseText

If InStr(mainString, subString) <> 0 Then

' Data has not been fetched properly. Will wait two seconds and try again.

Application.Wait (Now + TimeValue("0:00:2"))
GoTo FetchAgain

Else

' Data has been fetched properly. Proceed to the next step.

Set Json = JsonConverter.ParseJson(mainString)

End If
        
    End With
        
        j = 4
        
        ' Formatting Header Values
        
        Sheet1.Activate
        
        Cells.Clear
        Range("B1").Value = Json("records")("underlyingValue")
        dtArr = Split(Json("records")("timestamp"), " ")
        Range("C1").Value = FormatDateTime(dtArr(0), 2)
        Range("D1").Value = FormatDateTime(dtArr(1), 4)
        
        Range("A2:f2").MergeCells = True
        Range("A2").Value = "CALLS"
        Range("g2").Value = Json("records")("expiryDates")(1)
        Range("h2:m2").MergeCells = True
        Range("H2").Value = "PUTS"
        Range("A1").Value = "BANKNIFTY"
        
        Dim headerValues As Variant
        '  headerValues = VBA.Array("OI", "Change in OI", "IV", "Volume", "Change in Price", "LTP", "Strike Price", "LTP", "Change in Price", "Volume", "IV", "Change in OI", "OI")
        headerValues = VBA.Array("OI", "Change in OI", "IV", "Volume", "Change in Price", "LTP", "Strike Price", "LTP", "Change in Price", "Volume", "IV", "Change in OI", "OI")
        Range("A3:m3").Value = headerValues
        
        Range("A1:m3").Font.FontStyle = "Bold"
        
        For i = 1 To Json("records")("data").Count
        
        If Json("records")("data")(i)("expiryDate") = Json("records")("expiryDates")(1) Then
        
        If Abs(Json("records")("data")(i)("strikePrice") - Json("records")("underlyingValue")) Then
        
        k = 1
        
        ' START OF OI DATA FOR THE CHOSEN EXPIRY DATE
        
        ' the following attributes can also be loaded
        ' strikePrice, expiryDate, underlying, identifier, openInterest, changeinOpenInterest,
        ' pchangeinOpenInterest, totalTradedVolume, impliedVolatility, lastPrice, change, pChange,
        ' totalBuyQuantity, totalSellQuantity, bidQty, bidprice, askQty, askPrice, underlyingValue
        
        If IsObject(Json("records")("data")(i)("CE")) Then
        Cells(j, k).Value = Json("records")("data")(i)("CE")("openInterest")
        Cells(j, k + 1).Value = Json("records")("data")(i)("CE")("changeinOpenInterest")
        Cells(j, k + 2).Value = Json("records")("data")(i)("CE")("impliedVolatility")
        Cells(j, k + 3).Value = Json("records")("data")(i)("CE")("totalTradedVolume")
        Cells(j, k + 4).Value = Json("records")("data")(i)("CE")("change")
        Cells(j, k + 5).Value = Json("records")("data")(i)("CE")("lastPrice")
        Else
        Cells(j, k).Value = ""
        Cells(j, k + 1).Value = ""
        Cells(j, k + 2).Value = ""
        Cells(j, k + 3).Value = ""
        Cells(j, k + 4).Value = ""
        Cells(j, k + 5).Value = ""
        End If
        
        If IsObject(Json("records")("data")(i)("PE")) Then
        Cells(j, k + 6).Value = Json("records")("data")(i)("PE")("strikePrice")
        Cells(j, k + 7).Value = Json("records")("data")(i)("PE")("lastPrice")
        Cells(j, k + 8).Value = Json("records")("data")(i)("PE")("change")
        Cells(j, k + 9).Value = Json("records")("data")(i)("PE")("totalTradedVolume")
        Cells(j, k + 10).Value = Json("records")("data")(i)("PE")("impliedVolatility")
        Cells(j, k + 11).Value = Json("records")("data")(i)("PE")("changeinOpenInterest")
        Cells(j, k + 12).Value = Json("records")("data")(i)("PE")("openInterest")
        
        Else
        Cells(j, k + 6).Value = ""
        Cells(j, k + 7).Value = ""
        Cells(j, k + 8).Value = ""
        Cells(j, k + 9).Value = ""
        Cells(j, k + 10).Value = ""
        Cells(j, k + 11).Value = ""
        Cells(j, k + 12).Value = ""
        End If
        
        ' END OF OI DATA FOR THE CHOSEN EXPIRY DATE
        
        j = j + 1
        
        End If
        
        End If
        
        Next i
End Sub
选项显式
子银行NiftyOptionChain()
Dim Json作为对象
将webURL设置为字符串、主字符串、子字符串
作为整数的Dim i
作为整数的Dim j
将k变为整数
Dim dtArr()作为字符串
webURL=”https://www.nseindia.com/api/option-chain-indices?symbol=BANKNIFTY"
subString=“未找到资源”
请再说一遍:
使用CreateObject(“msxml2.xmlhttp”)
.打开“获取”,webURL,False
'以下两条语句对于删除缓存结果很重要。
.setRequestHeader“内容类型”、“应用程序/json”
.setRequestHeader“如果修改自”,“2000年1月1日星期六00:00:00 GMT”
.发送
主字符串=.responseText
如果InStr(主字符串、子字符串)为0,则
'未正确获取数据。将等待两秒钟,然后重试。
Application.Wait(现在+时间值(“0:00:2”))
又来了
其他的
'数据已正确获取。继续下一步。
Set Json=JsonConverter.ParseJson(主字符串)
如果结束
以
j=4
'格式化标题值
表1.激活
牢房,没问题
范围(“B1”).Value=Json(“记录”)(“参考值”)
dtArr=Split(Json(“记录”)(“时间戳”),“”)
范围(“C1”)。值=FormatDateTime(dtArr(0),2)
范围(“D1”)。值=FormatDateTime(dtArr(1),4)
范围(“A2:f2”)。合并单元格=真
范围(“A2”).Value=“调用”
范围(“g2”)。值=Json(“记录”)(“过期日期”)(1)
范围(“h2:m2”)。合并单元格=真
范围(“H2”).Value=“put”
范围(“A1”).Value=“BANKNIFTY”
Dim HeaderValue作为变量
'headerValues=VBA.Array(“OI”、“OI变动”、“IV”、“数量”、“价格变动”、“LTP”、“履约价格”、“LTP”、“价格变动”、“数量”、“IV”、“OI变动”、“OI”)
headerValues=VBA.数组(“OI”、“OI变动”、“IV”、“数量”、“价格变动”、“LTP”、“履约价格”、“LTP”、“价格变动”、“数量”、“IV”、“OI变动”、“OI”)
范围(“A3:m3”)。值=水头值
范围(“A1:m3”).Font.FontStyle=“Bold”
对于i=1到Json(“记录”)(“数据”)。计数
如果Json(“记录”)(“数据”)(i)(“到期日”)=Json(“记录”)(“到期日”)(1)则
如果Abs(Json(“记录”)(“数据”)(i)(“删除价格”)-Json(“记录”)(“参考价值”)),则
k=1
'所选到期日的OI数据开始
'还可以加载以下属性
'删除价格,过期日期,基础,标识符,开放权益,变更权益,
'PChangeInPrinceRest,TotalTradeVolume,默示效用,最新价格,变更,pChange,
'totalBuyQuantity、totalSellQuantity、BidQuantity、bidprice、AskQuantity、askPrice、UnderlineyValue
如果是IsObject(Json(“记录”)(“数据”)(i)(“CE”)),则
单元格(j,k).Value=Json(“记录”)(“数据”)(i)(“CE”)(“openInterest”)
单元格(j,k+1).Value=Json(“记录”)(“数据”)(i)(“CE”)(“变更兴趣”)
单元格(j,k+2).Value=Json(“记录”)(“数据”)(i)(“CE”)(“隐含可用性”)
单元格(j,k+3).Value=Json(“记录”)(“数据”)(i)(“CE”)(“TotalTradeVolume”)
单元格(j,k+4).Value=Json(“记录”)(“数据”)(i)(“变更”)
单元格(j,k+5).Value=Json(“记录”)(“数据”)(i)(“CE”)(“最后价格”)
其他的
单元格(j,k)。Value=“”
单元格(j,k+1)。Value=“”
单元格(j,k+2)。Value=“”
单元格(j,k+3)。Value=“”
单元格(j,k+4)。Value=“”
单元格(j,k+5)。Value=“”
如果结束
如果是IsObject(Json(“记录”)(“数据”)(i)(“PE”)),则
单元格(j,k+6).Value=Json(“记录”)(“数据”)(i)(“PE”)(“删除线价格”)
单元格(j,k+7).Value=Json(“记录”)(“数据”)(i)(“PE”)(“最新价格”)
单元格(j,k+8).Value=Json(“记录”)(“数据”)(i)(“PE”)(“变更”)
单元格(j,k+9).Value=Json(“记录”)(“数据”)(i)(“PE”)(“TotalTradeVolume”)
单元格(j,k+10).Value=Json(“记录”)(“数据”)(i)(“PE”)(“隐含可用性”)
单元格(j,k+11).Value=Json(“记录”)(“数据”)(i)(“PE”)(“变更兴趣”)
单元格(j,k+12).Value=Json(“记录”)(“数据”)(i)(“PE”)(“openInterest”)
其他的
单元格(j,k+6)。Value=“”
单元格(j,k+7)。Value=“”
单元格(j,k+8)。Value=“”
单元格(j,k+9)。Value=“”
单元格(j,k+10)。Value=“”
单元格(j,k+11)。Value=“”
单元格(j,k+12)。Value=“”
如果结束
'所选到期日的OI数据结束
j=j+1
如果结束
如果结束
接下来我
端接头

如果URL位于活动工作表的
A1
中,则可以使用此URL

webURL=Range(“A1”).值
如果您想在特定的工作表上参考
A1
,例如
Sheet1
,您可以使用此选项

webURL=Sheets(“Sheet1”).范围(“A1”).值
您可以将“”放在单元格A1中,然后写入
webURL=Cells(1,“A”)。值如果BANKNIFTY是几个符号之一,则需要循环,即
“webURL=https://www.nseindia.com/api/option-chain-indices?symbol=“&单元格(i,“A”)。值