Гид по технологиям

Чтение и вывод HTML через VBA

5 min read VBA Автоматизация Обновлено 01 Jan 2026
Чтение и вывод HTML через VBA
Чтение и вывод HTML через VBA

О чём эта статья

Браузер — по сути, приложение, которое получает текст с сервера и отображает его. С помощью встроенной ссылки “Microsoft Internet Controls” в VBA вы можете: читать HTML со страницы, манипулировать им и формировать собственные HTML-страницы из данных Excel/Word/Access.

Важно: InternetExplorer через COM работает в Windows-окружениях и использует движок Internet Explorer. Для новых проектов рассмотрите современные альтернативы (см. раздел «Альтернативные подходы»).

Что вы получите в результате

  • Пошаговую инструкцию по включению Microsoft Internet Controls.
  • Два полноценных примера кода: 1) вывод HTML из данных листа Excel, 2) чтение HTML с сайта и вывод модифицированной страницы.
  • Разбор кода, ограничения, рекомендации по безопасности и план миграции от IE к современным решениям.

Снимок экрана редактора VBA и меню ссылок Microsoft Internet Controls

Включение Microsoft Internet Controls

  1. В Excel откройте вкладку Разработчик.
  2. Включите Режим конструктора и нажмите Просмотр кода, чтобы открыть редактор VBA. (В старых версиях Excel шаги могут отличаться.)

Окно редактора VBA и меню Tools → References

  1. В редакторе VBA выберите Tools → References.
  2. В списке ссылок найдите “Microsoft Internet Controls” и отметьте чекбокс, затем нажмите OK.

Список References и выделенная опция Microsoft Internet Controls

После этого в VBA можно создавать объекты InternetExplorer через CreateObject или New. Эти объекты умеют навигировать по URL, возвращать DOM страницы и позволять вам записать собственный HTML в окно браузера.

Пример открытой страницы, созданной из VBA

Пример 1 — формирование HTML-отчёта из листа Excel

Ниже — рабочий пример, который берет значения из ячеек Sheet1 и выводит их в новое окно браузера.

Sub Button1_Click()
    Dim objIE As Object
    Dim HTML As String

    '----------The HTML CODE GOES FROM HERE AND DOWN----------
    HTML = "HTML Report Page" & _
           "" & _
           "The Following Are Results From Your Daily Calculation" & _
           "

" & _ "Daily Production: " & Sheet1.Cells(1, 1) & "

" & _ "Daily Scrap: " & Sheet1.Cells(1, 2) & "

" '----------The HTML CODE GOES HERE AND ABOVE--------- On Error GoTo error_handler Set objIE = CreateObject("InternetExplorer.Application") With objIE .Navigate "about:blank" Do While .Busy: DoEvents: Loop Do While .ReadyState <> 4: DoEvents: Loop .Visible = True .Document.Write HTML End With Set objIE = Nothing Exit Sub error_handler: MsgBox ("Unexpected Error, I'm quitting.") On Error Resume Next objIE.Quit Set objIE = Nothing End Sub

Как это работает (коротко): CreateObject создаёт COM-объект InternetExplorer, .Navigate открывает пустую страницу, вы ждёте, пока объект не станет готов, затем .Document.Write выводит ваш HTML.

Результат: сгенерированная HTML-страница с данными Excel

Пример 2 — чтение и модификация HTML с внешнего сайта

В следующем примере мы загружаем страницу Google в объект IE, читаем innerHTML тела страницы в переменную, и затем выводим комбинированную страницу (вашая шапка + оригинальное тело).

Sub Button1_Click()
    Dim objIE As Object
    Dim HTML As String

    On Error GoTo error_handler

    Set objIE = CreateObject("InternetExplorer.Application")
    With objIE
        .Navigate "http://www.google.com"
        Do While .Busy: DoEvents: Loop
        Do While .ReadyState <> 4: DoEvents: Loop
        .Visible = True
        HTML = objIE.Document.Body.innerHTML
        .Document.Write "My Own Google Results!

This is an Edited Version of the Google Page!

" & HTML & "" End With Set objIE = Nothing Exit Sub error_handler: MsgBox ("Unexpected Error, I'm quitting.") On Error Resume Next objIE.Quit Set objIE = Nothing End Sub

Результат: вы получаете исходный HTML страницы в виде строки. После этого можно искать элементы, изменять контент, добавлять свои блоки перед выводом.

Пример модифицированной страницы, созданной из содержимого Google

Разбор и советы по коду

  • objIE.Document.Body.innerHTML возвращает содержимое тела страницы как строку.
  • Циклы Do While .Busy и Do While .ReadyState <> 4 нужны, чтобы дождаться загрузки.
  • .Document.Write перезаписывает текущее содержимое документа. Если нужно дописать, можно манипулировать DOM через .Document.createElement и .appendChild.
  • Всегда освобождайте объект (Set objIE = Nothing) и корректно обрабатывайте ошибки, чтобы не оставлять висящие процессы.

Альтернативные подходы

  1. XMLHTTP/WinHTTP (без визуального браузера). Подходит, если нужна быстрая загрузка HTML и дальнейший парсинг. Не выполняет JavaScript.
  2. Selenium (WebDriver) для автоматизации реального браузера (Chrome/Edge/Firefox). Поддерживает исполнение JS и взаимодействие с интерактивными элементами.
  3. WebView2 (Edge Chromium) — современная встроенная компонента для встраивания Chromium-движка в приложения; рекомендуема для новых проектов.
  4. Power Query в Excel — если нужно просто импортировать таблицы с веб-страницы.

Когда выбрать альтернативу: если страница активно использует JavaScript для рендера, XMLHTTP не подойдёт — нужен Selenium или WebView2.

Ограничения и когда это не сработает

  • InternetExplorer устарел: на многих системах его поддержка уже ограничена.
  • Сайты с защитой от скрапинга, капчей, динамической подгрузкой через JS потребуют более сложных инструментов (Selenium, Puppeteer, WebView2).
  • Правила использования: не нарушайте условия использования сайтов и законы о приватности.

Безопасность и приватность

  • Не сохраняйте пароли и персональные данные в открытом виде в HTML.
  • При загрузке страниц используйте HTTPS, если возможно.
  • Уважайте robots.txt и условия сервиса.
  • Ограничьте частоту запросов, чтобы не создавать нагрузку на чужие ресурсы.

Чек-листы по ролям

Разработчик:

  • Включил Microsoft Internet Controls.
  • Добавил обработку ошибок и логи.
  • Освобождает COM-объекты.

Аналитик:

  • Определил, какие поля листа будут экспортироваться в HTML.
  • Проверил форматирование и кодировку (UTF-8).

Системный администратор:

  • Убедился в совместимости браузерного движка и политик безопасности.
  • Проверил права на сетевые вызовы с клиентских машин.

Мини-методология разработки надежного решения

  1. Прототип: реализуйте минимальную функциональность с CreateObject(“InternetExplorer.Application”).
  2. Локальные тесты: проверяйте для нескольких страниц, включая динамические.
  3. Обработка ошибок: логирование, таймауты, graceful shutdown.
  4. Производительность: кеширование, минимизация парсинга.
  5. Миграция: план перехода на WebView2 или Selenium при необходимости.

Критерии приёмки

  • Скрипт корректно открывает и закрывает окно браузера без оставшихся процессов.
  • HTML-отчёт отображает данные из листа в ожидаемом формате.
  • Решение соответствует требованиям безопасности и не вызывает блокировок со стороны целевого сайта.

Глоссарий (1 строка)

  • COM — механизм межпроцессного взаимодействия в Windows.
  • DOM — модель объектов документа, позволяет программно изменять HTML.
  • WebView2 — современный встроенный компонент Microsoft на базе Chromium.

Совместимость и миграция

Поскольку Internet Explorer устарел, для долгосрочных решений планируйте миграцию на:

  • WebView2 (встраиваемый Chromium), если нужен UI внутри приложения;
  • Selenium/Headless Chrome для сложной автоматизации и взаимодействия с JS;
  • XMLHTTP/WinHTTP для простого скачивания HTML (без выполнения JS).

Примеры тест-кейсов и приёмка

  • Открыть страницу «about:blank» и вывести простой HTML — ожидается видимое окно с форматированным текстом.
  • Загрузить внешнюю страницу и сохранить её тело в переменную — ожидается непустая строка HTML.

Image credit: Shutterstock


Если у вас есть идеи по применению этого способа в ваших задачах (от отчётов до простого скрапинга), напишите, какие данные вы хотите автоматизировать — и я помогу адаптировать код.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство