Как получить расширение файла с помощью Microsoft XMLHTTP с помощью VBA

Я использую следующий простой код для загрузки и сохранения некоторых файлов из Интернета. Сервер, к которому я подключаюсь, иногда генерирует файлы excel и другие текстовые файлы, я хотел бы знать, может ли любой возможный способ выяснить, что такое расширение файла, чтобы его можно было загрузить с помощью соответствующего расширения? прямо сейчас я сохраняю все файлы в виде файлов txt, и если файл возвращает файлы excel, то загруженный файл будет бесполезен (поскольку он сохраняется как файл txt, и мне нужно изменить расширение вручную). Спасибо, парни

Dim myURL As String Dim WinHttpReq As Object Dim FP As String myURL = "SAMPLE URL" Set WinHttpReq = CreateObject("Microsoft.XMLHTTP") WinHttpReq.Open "GET", myURL, False 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 (FP & "\" & C1 & "-" & C2 & ".txt"), 2 oStream.Close End If End Sub 

Прежде чем WinHttpReq.Open «GET», myUrl, false, вы можете попытаться открыть заголовок и посмотреть файл типа mime перед загрузкой:

 WinHttpReq.Open "HEAD", myUrl, false WinHttpReq.Send MyHeader = WinHttpReq.getAllResponseHeaders() ' Scan MyHeader here to find your file mime type ... 

Благодаря kiks73 я нахожу свой способ справиться с этой проблемой. Однако я хотел добавить к ней небольшую часть, используя

 MyHeader = WinHttpReq.getAllResponseHeaders() 

даст вам что-то вроде

«Сервер: Microsoft-IIS / 5.0 Дата: Вт, 29 Июл 2014 18:05:44 GMT X-Powered-By: ASP.NET Content-Disposition: FileName = 11120166.Txt Content-Type: application / octet-stream Content- Длина: 152 Содержание:

"

который может быть немного трудно читать и анализировать, поэтому я нашел альтернативный способ получить только имя файла и расширение:

 MyHeader = WinHttpReq.getResponseHeader("Content-Disposition") 

таким образом вы бросаете все мусор и получаете только то, что ищете. ОДНАКО: в моем случае я должен загружать от 300 до 8000 файлов одновременно (все одного типа, но тип может меняться от одного сеанса к другому), и попытка растянуть расширение каждый раз кажется абсурдным, и это делает мой код авария, так что вы можете растянуть растяжение только один раз. Еще раз спасибо kiks73 за то, что помог мне

  • Как получить результат запроса доступа в Excel?
  • Мне нужно вывести имя с полным именем во время добавления
  • Импорт файла Excel в Access с помощью VBA
  • Консолидация VBA файлов в каталоге через ms-access
  • Установите формат даты как dd-mmm-yyyy в текстовом поле activex VBA
  • Как проверить значения времени Excel в Access VBA?
  • VBA сохраняет файлы excel, заблокированные от меня после кода
  • Добавить в Excel из Access с помощью VBA
  • Экспорт результатов запроса выбора Access 2013 в лист Excel 2013 без создания нового листка или разрыва ссылок
  • MS Access Экспорт в форматирование Excel
  • Доступ к VBA Automation для экспорта в Excel 2016
  • Interesting Posts

    Значение столбца таблицы Excel Pivot Table обновляет аналогичные значения при обновлении

    Формула OFFSET выдает ошибку при попытке динамической ссылки на лист / ячейку

    Я пытаюсь создать формулу в excel, чтобы выбрать нижние 5 значений

    VBA: Подзаголовок вне допустимого диапазона

    Как показать текст стиля html в ячейке excel с помощью SpreadsheetGear

    Извлечь значение столбца из одной вкладки из ключа и назначить его другому значению табуляции, используя формулу

    Установить значение vlookup ячейки, основанное на изменении значения Combobox

    Excel 2016 вставляет копии ячеек невероятно медленно

    Каков наилучший способ получить последний непустой лист в Excel (VBA)

    xslt, чтобы преуспеть в asp.net

    Сохранить и закрыть файл Excel после добавления данных?

    Как увеличить даты на 7 каждые 7 строк в Excel

    Автоматическая фильтрация таблицы с помощью ComboBox

    Xlsx или csv возвращаются в Matlab

    Показать содержимое ячейки

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