json - ওয়েবপৃষ্ঠাটি খুলুন, সমস্ত নির্বাচন করুন, শীটে অনুলিপি করুন



vba excel-vba (1)

আমি উচ্চ এবং নিম্নের জন্য এমন কোনও কিছুর সন্ধান করেছি যা এটি আমার জন্য কাজ করবে, ভাগ্য নেই! কোন সাহায্য এত প্রশংসা হবে! :) বারচার্টস.কম থেকে স্টক বিকল্পগুলির ডেটা অনুলিপি করতে এবং এক্সেল শীটে পেস্ট করুন।

আমি যেখানে আছি এখানে:

Sub CopyTables()

    Dim ie As Object
    Dim I As Long
    I = 0
    Set ie = CreateObject("InternetExplorer.Application")
    ie.navigate "https://www.barchart.com/stocks/quotes/GOOG/options?moneyness=allRows&view=sbs&expiration=2018-02-23"
    ie.Visible = True

    Do While ie.Busy And Not ie.readyState = 4
    DoEvents
    Loop

    DoEvents

  Set tables = ie.document.getElementsByTagName("table")
  SetDataFromWebTable tables, Range("B5")
  ie.Quit
End Sub

যদি সম্ভব হয় তবে আমি ওয়েবপৃষ্ঠা ড্রপডাউন "মেয়াদোত্তীর্ণ" থেকে তারিখগুলিও বের করতে এবং সেগুলিও এক্সেল হিসাবে পেস্ট করতে পছন্দ করব। এই বিষয়ে কোনও সহায়তার জন্য আপনাকে আগেই অনেক ধন্যবাদ!


ওয়েবপৃষ্ঠা সোর্স এইচটিএমএল লিঙ্ক সরবরাহ করে

https://www.barchart.com/stocks/quotes/GOOG/options?moneyness=allRows&view=sbs&expiration=2018-02-23

প্রয়োজনীয় ডেটা ধারণ করে না, এটি এজেএক্স ব্যবহার করে। Https://www.barchart.com ওয়েবসাইটে একটি এপিআই উপলব্ধ। প্রতিক্রিয়াটি JSON ফর্ম্যাটে ফিরে আসে। পৃষ্ঠাটি যেমন Chrome এ নেভিগেট করুন, তারপরে বিকাশকারী সরঞ্জাম উইন্ডো ( F12 ), নেটওয়ার্ক ট্যাব খুলুন, পৃষ্ঠাটি পুনরায় লোড করুন ( F5 ) এবং লগড এক্সএইচআর পরীক্ষা করুন। সর্বাধিক প্রাসঙ্গিক ডেটা হল ইউএসএল দ্বারা জেএসএন স্ট্রিং:

https://core-api.barchart.com/v1/options/chain?symbol=GOOG&fields=optionType%2CstrikePrice%2ClastPrice%2CpercentChange%2CbidPrice%2CaskPrice%2Cvolume%2CopenInterest&groupBy=strikePrice&meta=field.shortName%2Cfield.description%2Cfield.type&raw=1&expirationDate=2018-02-23

উপরে বর্ণিত তথ্য পুনরুদ্ধার করতে আপনি নীচের ভিবিএ কোডটি ব্যবহার করতে পারেন। JSON প্রসেসিংয়ের জন্য JSON.bas প্রকল্পে JSON.bas মডিউলটি আমদানি করুন।

Option Explicit

Sub Test48759011()

    Dim sUrl As String
    Dim sJSONString As String
    Dim vJSON As Variant
    Dim sState As String
    Dim aData()
    Dim aHeader()

    sUrl = "https://core-api.barchart.com/v1/options/chain?" & _
        Join(Array( _
            "symbol=GOOG", _
            "fields=" & _
            Join(Array( _
                "optionType", _
                "strikePrice", _
                "lastPrice", _
                "percentChange", _
                "bidPrice", _
                "askPrice", _
                "volume", _
                "openInterest"), _
            "%2C"), _
            "groupBy=", _
            "meta=" & _
            Join(Array( _
                "field.shortName", _
                "field.description", _
                "field.type"), _
            "%2C"), _
            "raw=1", _
            "expirationDate=2018-02-23"), _
        "&")
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", sUrl, False
        .send
        sJSONString = .responseText
    End With
    JSON.Parse sJSONString, vJSON, sState
    vJSON = vJSON("data")
    JSON.ToArray vJSON, aData, aHeader
    With Sheets(1)
        .Cells.Delete
        .Cells.WrapText = False
        OutputArray .Cells(1, 1), aHeader
        Output2DArray .Cells(2, 1), aData
        .Columns.AutoFit
    End With

End Sub

Sub OutputArray(oDstRng As Range, aCells As Variant)

    With oDstRng
        .Parent.Select
        With .Resize(1, UBound(aCells) - LBound(aCells) + 1)
            .NumberFormat = "@"
            .Value = aCells
        End With
    End With

End Sub

Sub Output2DArray(oDstRng As Range, aCells As Variant)

    With oDstRng
        .Parent.Select
        With .Resize( _
                UBound(aCells, 1) - LBound(aCells, 1) + 1, _
                UBound(aCells, 2) - LBound(aCells, 2) + 1)
            .NumberFormat = "@"
            .Value = aCells
        End With
    End With

End Sub

আমার জন্য আউটপুট নিম্নরূপ:

ওয়েবপৃষ্ঠায় আউটপুটকে পাশের-পাশের দৃশ্যের আরও কাছাকাছি করতে, আপনি কিছুটা ক্যোয়ারী প্যারামিটার দিয়ে খেলতে পারেন:

    sUrl = "https://core-api.barchart.com/v1/options/chain?" & _
        Join(Array( _
            "symbol=GOOG", _
            "fields=" & _
            Join(Array( _
                "optionType", _
                "strikePrice", _
                "lastPrice", _
                "percentChange", _
                "bidPrice", _
                "askPrice", _
                "volume", _
                "openInterest"), _
            "%2C"), _
            "groupBy=strikePrice", _
            "meta=", _
            "raw=0", _
            "expirationDate=2018-02-23"), _
        "&")

এবং লাইন পরিবর্তন

    Set vJSON = vJSON("data")

সেক্ষেত্রে আউটপুট নিম্নরূপ:

বিটিডব্লিউ, একই উত্তর নিম্নলিখিত উত্তরগুলিতে প্রয়োগ করা হয়েছে: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 এবং 11 ।





xmlhttprequest