EXCEL VBA - Чтобы открыть текстовый файл с веб-сайта - PullRequest
0 голосов
/ 26 октября 2009

Я хочу прочитать текстовый файл с веб-сайта, такого как www.site.com/example.txt, и прочитать соответствующие вкладки в листе Excel. Возможно ли использовать Excel VBA? Можете ли вы дать несколько примеров?

Можете ли вы посоветовать, что мне нужно прочитать, чтобы я мог достичь. Имеется ли какое-нибудь онлайн-руководство или материал? Пожалуйста, помогите

На сайте ниже приведен пример того, как это сделать в JAVA. У кого-нибудь есть пример для VBA?

http://www.daniweb.com/forums/thread143010.html#

Ответы [ 4 ]

7 голосов
/ 10 ноября 2009

Вот пример того, как загрузить текстовый файл.

Требуется ссылка на Microsoft WinHTTPServices

Sub Test_DownloadTextFile()
    Dim text As String
    text = DownloadTextFile("http://stackoverflow.com/")

    'At this point you can process you file how you wish.
    Debug.Print text
End Sub

'Tool.References... Add a reference to Microsoft WinHTTPServices
Public Function DownloadTextFile(url As String) As String
    Dim oHTTP As WinHttp.WinHttpRequest
    Set oHTTP = New WinHttp.WinHttpRequest
    oHTTP.Open Method:="GET", url:=url, async:=False
    oHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    oHTTP.setRequestHeader "Content-Type", "multipart/form-data; "
    oHTTP.Option(WinHttpRequestOption_EnableRedirects) = True
    oHTTP.send

    Dim success As Boolean
    success = oHTTP.waitForResponse()
    If Not success Then
        Debug.Print "DOWNLOAD FAILED!"
        Exit Function
    End If

    Dim responseText As String
    responseText = oHTTP.responseText

    Set oHTTP = Nothing

    DownloadTextFile = responseText
End Function
5 голосов
/ 27 октября 2009

Взгляните на метод Workbooks.OpenText . Аргумент имени файла будет принимать http URL. Метод позволяет открыть и проанализировать его за один шаг (при условии, что это файл с разделителями).

Application.Workbooks.OpenText("http://somewebsite.com/test.txt", _
  StartRow:=3, _
  DataType:=Excel.XlTextParsingType.xlDelimited, _
  TextQualifier:=Excel.XlTextQualifier.xlTextQualifierNone, _
  Comma:=True)
0 голосов
/ 27 октября 2009

Мне нравится предложение Фридриха, но если вы хотите сделать это альтернативным способом, вы можете использовать команду оболочки из VBA для запуска этого процесса:

Реализация команды Linux WGet для Windows

Это порт команды Linux, который получает содержимое веб-сайта (URL) в файл из командной строки, тогда можно было бы открыть файл, который был создан локально в вашем коде VBA, и обработать его. соответственно.

(Возможно, существуют другие реализации этой команды, я только что связался с первой, которую я нашел в Google)

0 голосов
/ 26 октября 2009

Да, вы можете использовать, например, клиентскую библиотеку http для извлечения страниц из Интернета.

Есть также доступные инструменты или такие задачи http://www.iopus.com/iMacros/excel.htm?ref=rg8excel1HB&gclid=CLWbrNef2p0CFUtp4wodBnx8sQ.

Если вы хотите сделать это самостоятельно, вы должны ссылаться на «Microsoft Internet Transfer» Active X контроль.

Например, вы можете получить страницу с buf = HTTPControl.OpenURL (page_you_like_to_fetch, icByteArray) тогда вы можете просто открыть его с обычными «подозреваемыми», как Откройте или вы можете зарегистрировать файл как источник ODBC и получить его с SQL как заявления.

Конечно, вы также можете сделать это вручную. Открытие файла, доступ к одной записи за другой и помещение его в соответствующие ячейки Execl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...