Функция FileQueryRange предназначена для импорта данных из файлов HTML
Например, если нам надо макросом Excel получить данные из писем, созданных в HTML формате, то эта функция как раз нам и поможет
Эта функция, по сути, аналогична другой - GetQueryRange, с тем лишь различием, что GetQueryRange работает с веб-страницами (исходными данными является гиперссылка, ведущая в интернет), а описываемая в этой статье FileQueryRange принимает в качестве параметра имя файла, расположенного на локальном компьютере.
Код функции импорта данных из HTML файла:
Function FileQueryRange(ByVal filename$, Optional ByVal Tables$) As Range ' функция загружает HTML файл filename$ ' на скрытый лист tmpWQ (при его отсутствии - лист создаётся) ' возвращает диапазон ячеек, заполненный импортированными данными On Error Resume Next: Err.Clear Dim tmpSheet As Worksheet: Set tmpSheet = ThisWorkbook.Worksheets("tmpWQ") If tmpSheet Is Nothing Then Application.ScreenUpdating = False Set tmpSheet = ThisWorkbook.Worksheets.Add tmpSheet.Name = "tmpWQ" tmpSheet.Visible = xlSheetVeryHidden End If If tmpSheet Is Nothing Then msg$ = "Не удалось добавить скрытый лист «tmpWQ» в файл программы" MsgBox msg, vbCritical, "Невозможно выполнить запрос к файлу": End End If tmpSheet.Cells.Delete: DoEvents: Err.Clear With tmpSheet.QueryTables.Add("URL;file:///" & Replace(filename$, " ", "%20"), tmpSheet.Range("A1")) If Len(Tables$) Then .WebSelectionType = xlSpecifiedTables .WebTables = Tables$ Else .WebSelectionType = xlEntirePage End If .FillAdjacentFormulas = False: .PreserveFormatting = True .RefreshOnFileOpen = False: DoEvents .WebFormatting = xlWebFormattingNone ' или xlWebFormattingAll .Refresh BackgroundQuery:=False: DoEvents If Err = 0 Then Set FileQueryRange = tmpSheet.UsedRange .Delete: DoEvents End With End Function
Комментарии
Спасибо но уже разобрался в принципе пока сойдет. буду покупать
Могу настроить под заказ
заказы на парсер принимаются в таком виде
http://excelvba.ru/programmes/Parser/order
Высылайте архив с несколькими исходными файлами HTML, и пример результата в файле Excel
Да тогда необходима теперь другая задача, тк сервер сайта отдает файлы с трудом они наканачены, и как парсить их из файлов в папке с помощью вашего парсераЕ?
Сохранять прочтенный файл в переменную и уже потом ее разбирать?
С парсером, - всё получится
Он для таких задач и был создан
Да наверно не получится там страница в среднем весит 700кб и внутри 300000 символов
Я бы хотел разобрать сам в коде макроса. но и куплю наверно парсер
У меня была старая версия парсера, там я видел такую функцию, но фишка в том что ссылка на файл считывания в действии считывания текста из текстового файла не передавалась втоматически никаким действие, я нашел только считывание ссылки в переменную из ячейки, когда файлы в размере сотен штук сами понимаете не будешь вечно копировать эту ссылку, по крайней мере в той версии парсера.2_8 вроде или 2_9 не помню.
проще настроить программу-парсер под эту задачу:
http://excelvba.ru/programmes/Parser
Если сами не разберетесь, - могу настроить под заказ.
Привет. Мне нужно из папки с кучей хтмл файлов, прочитать каждый файл и дальше загрузить его в один столбец напротив пути и названия этого файла . один файл одна ячейка.
как из этих функций соббрать работающий парсер?
я пытался собрать из функций DATfolder2Array и например http://excelvba.ru/code/FileQueryRange
но ниче не получается
файлы с расширением .htm
Отправить комментарий