Как загрузить файл с помощью VBA (без Internet Explorer)

Мне нужно загрузить CSV-файл с веб-сайта с помощью VBA в Excel. Сервер также должен был аутентифицировать меня, поскольку это были данные из службы опроса.

Я нашел много примеров, используя Internet Explorer, управляемый с VBA для этого. Однако это были в основном медленные решения, и большинство из них также были запутаны.

Обновление: через некоторое время я нашел отличное решение с использованием объекта Microsoft.XMLHTTP в Excel. Я решил поделиться решением ниже для дальнейшего использования.

Это решение основано на этом веб-сайте: http://social.msdn.microsoft.com/Forums/en-US/bd0ee306-7bb5-4ce4-8341-edd9475f84ad/excel-2007-use-vba-to-download-save- CSV-из-URL

Он немного изменен, чтобы перезаписать существующий файл и передать учетные данные для входа.

Sub DownloadFile() Dim myURL As String myURL = "https://YourWebSite.com/?your_query_parameters" Dim WinHttpReq As Object Set WinHttpReq = CreateObject("Microsoft.XMLHTTP") WinHttpReq.Open "GET", myURL, False, "username", "password" WinHttpReq.send myURL = WinHttpReq.responseBody If WinHttpReq.Status = 200 Then Set oStream = CreateObject("ADODB.Stream") oStream.Open oStream.Type = 1 oStream.Write WinHttpReq.responseBody oStream.SaveToFile "C:\file.csv", 2 ' 1 = no overwrite, 2 = overwrite oStream.Close End If End Sub 
 Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _ (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, _ ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long Sub Example() DownloadFile$ = "someFile.ext" 'here the name with extension URL$ = "http://some.web.address/" & DownloadFile 'Here is the web address LocalFilename$ = "C:\Some\Path" & DownloadFile !OR! CurrentProject.Path & "\" & DownloadFile 'here the drive and download directory MsgBox "Download Status : " & URLDownloadToFile(0, URL, LocalFilename, 0, 0) = 0 End Sub 

Источник

Я нашел это при поиске загрузки с FTP с именем пользователя и адресом в URL-адресе. Пользователи предоставляют информацию, а затем выполняют вызовы.

Это было полезно, потому что в нашей организации есть Kaspersky AV, который блокирует active http://FTP.exe, но не веб-соединения. Мы не смогли развиваться в доме с http://ftp.exe, и это было нашим решением. Надеюсь, это поможет другим, кто ищет информацию!

  • Загрузите несколько файлов async и дождитесь их завершения до выполнения остальной части кода.
  • Как обеспечить загрузку файла из компонента поддержки JSF?
  • Xcode - установить средства командной строки
  • Могу ли я загрузить SQLite db on / sdcard и получить доступ к нему из своего приложения для Android?
  • Двоичные файлы повреждены - Как загрузить двоичные файлы с помощью AngularJS
  • ASP.NET Как передать файл пользователю
  • Как загрузить файлы на серверной папке с помощью jsp
  • Ant, загрузка набора файлов с удаленной машины
  • escapeshellarg () отключен по соображениям безопасности
  • Как перенести изображение с его URL на SD-карту?
  • wget для загрузки файла и сохранения в виде другого имени файла
  • Interesting Posts

    Android Studio: «Выберите Android SDK»

    Изменение библиотеки OpenSSL в приложении Android для HttpClient

    Как я могу сделать Windows PC пуленепробиваемым для домашних пользователей?

    Ограничить количество записей, которые могут быть записаны в путь (ссылаться на другие пути в правилах безопасности)

    Как получить максимальное разрешение на Ubuntu в Microsoft Virtual PC?

    Ffmpeg: Преобразование MKV в MP4 без потерь

    Удаление повторяющихся элементов с помощью XSLT

    Метод ввода чешского языка и поддержка шрифтов в gvim 7.4 на Windows 7

    Непрозрачность CSS не работает в IE8

    Условная проверка модели в MVC

    «Фатальный: корневой файл индекса» продолжает повторяться в git

    Запустить командный файл с командой psql без пароля

    Как использовать «содержит» или «как» в динамическом запросе linq?

    Как я могу провести сравнение строк без учета регистра?

    создание пользовательских ячеек таблицы в быстрых

    Давайте будем гением компьютера.