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

Чтение и вывод 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
Автор
Редакция

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

Резервное копирование в облако: дублирование
Облачное хранение

Резервное копирование в облако: дублирование

Pages для Mac — полное руководство по шаблонам
Обзор ПО

Pages для Mac — полное руководство по шаблонам

Как управлять доступом к местоположению на iPhone
Конфиденциальность

Как управлять доступом к местоположению на iPhone

Как освободить внутреннюю память Android
Android.

Как освободить внутреннюю память Android

Как установить Linux на ПК или ноутбук
Руководство

Как установить Linux на ПК или ноутбук

Как сделать башню для бросков костей — DIY
3D-печать

Как сделать башню для бросков костей — DIY