मेरे पास कुछ चादरों के साथ एक एक्सेल फ़ाइल है और मैं चाहता हूं कि उनमें से एक "डेटा" नामक मेरा कच्चा डेटा हो जो निम्नलिखित यूआरएल पर है। https://www.bestinver.es/WS/Api/Profitability/ डाउनलोड करेंExcelLiquidity?productId=1

मैंने खोजा और मेरे पास ऐसा कुछ है:

Sub getData()
    Dim str As String
     
    'Delete existing data
    Sheets("Data").Activate 'Name of sheet the data will be downloaded into. Change as required.
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
     
    'Download stock quotes. Be patient - takes a few seconds.
    str = "https://www.bestinver.es/WS/Api/Profitability/DownloadExcelLiquidity?productId=1"
    QueryQuote:
                With Sheets("Data").QueryTables.Add(Connection:="URL;" & str, Destination:=Sheets("Data").Range("a1"))
                    .BackgroundQuery = True
                    .TablesOnlyFromHTML = False
                    .Refresh BackgroundQuery:=False
                    .SaveData = True
                End With
     
    Sheets("Data").Range("a1").CurrentRegion.TextToColumns Destination:=Sheets("Data").Range("a1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, other:=True, OtherChar:=",", FieldInfo:=Array(1, 2)
     
    Sheets("Data").Columns("A:B").ColumnWidth = 12
    Range("A1").Select
End Sub

यह डेटा डाउनलोड करता है लेकिन यह पढ़ता है क्योंकि यह एक .csv था और डेटा .xls है इसलिए यह एक त्रुटि फेंकता है।

0
Xevi 11 नवम्बर 2020, 14:47

1 उत्तर

सबसे बढ़िया उत्तर

यह आपके लिए फ़ाइल डाउनलोड करेगा।

Sub DownloadFile()

Dim myURL As String
myURL = "https://www.bestinver.es/WS/Api/Profitability/DownloadExcelLiquidity?productId=1"

Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.send

If WinHttpReq.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write WinHttpReq.responseBody
    oStream.SaveToFile "C:\your_path_here\your_file.xlsx", 2 ' 1 = no overwrite, 2 = overwrite
    oStream.Close
End If

End Sub
1
ASH 11 नवम्बर 2020, 22:53