-1

Я хочу создать рабочую таблицу, в которой пользователь может вводить символ акций, и баланс автоматически загружается из таблицы «Утренняя звезда» в таблицу, а затем для данных запускаются некоторые пользовательские формулы.

На github я обнаружил скрытый API-интерфейс morningstar:https://gist.github.com/hahnicity/45323026693cdde6a116

Например, чтобы получить некоторые финансовые данные, я использую (в своем браузере):http://financials.morningstar.com/ajax/ReportProcess4CSV.html?t=TWTR&reportType=is&period=12&dataType=A&order=asc&columnYear=5&number=3

Теперь я попытался начать с создания запроса, используя Данные-> Новый запрос-> Из другого источника-> Из Интернета, я ввел URL и вместо того, чтобы видеть фактические данные csv, как в моем браузере, появляется всплывающее окно, чтобы фактически открыть файл в новом окне Excel. Даже при попытке запросить CSV и ввести URL-адрес, он не работает.

Всплывающее окно выглядит так:

Я не хочу открывать этот файл, я хочу запросить данные CSV!

Есть идеи, почему это не работает? И как заставить это действительно работать?

большое спасибо

1 ответ1

1

Я не знаю, как Excel может делать то, что вы хотите изначально; Тем не менее, я написал процедуру, которую я использовал для загрузки биржевых данных. В моем случае я использовал yahoo.finance.com, но вы можете довольно легко изменить это для сайта, с которого вы получаете данные о запасах:

Sub GetData()

Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
Dim i As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual

Set DataSheet = ActiveSheet

range("C7").CurrentRegion.ClearContents
i = 7
qurl = "http://ichart.finance.yahoo.com/table.csv?s=" + Cells(i, 1)
i = i + 1
While Cells(i, 1) <> ""
    qurl = qurl + "+" + Cells(i, 1)
    i = i + 1
Wend
qurl = qurl + "&f=" + "nl1vhgd1rm4"

QueryQuote:
         With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.range("C7"))
            .BackgroundQuery = True
            .TablesOnlyFromHTML = False
            .Refresh BackgroundQuery:=False
            .SaveData = True
        End With

        range("C7").CurrentRegion.TextToColumns Destination:=range("C7"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=True, Space:=False, other:=False


'turn calculation back on
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True

Columns("C:C").ColumnWidth = 25.43
range("h2").Select

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .