Функция импорта данных из HTML файлов

Функция 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

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
 __     __  _   _          __        __  _____ 
\ \ / / (_) / | _ _ \ \ / / | ___|
\ \ / / | | | | | | | | \ \ /\ / / | |_
\ V / | | | | | |_| | \ V V / | _|
\_/ |_| |_| \__, | \_/\_/ |_|
|___/
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.