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

Автоматизация запуска URL в Firefox и Chrome из Excel с помощью Selenium VBA

7 min read Автоматизация Обновлено 15 Dec 2025
Selenium VBA: запуск URL из Excel в Firefox и Chrome
Selenium VBA: запуск URL из Excel в Firefox и Chrome

Изображение: иллюстрация автоматизации браузера из Excel

Ключ к автоматизации — выполнять задачи быстрее и проще, чем вы делали раньше. Подумайте, какие операции занимают у вас много времени. Какие части рабочего процесса вы хотели бы автоматизировать?

Excel — самый распространённый инструмент для учёта финансов, управления проектами и приоритизации задач. В материале о автоматизации Internet Explorer я показал, как запускать группы URL напрямую из листов Excel с помощью встроенного объекта IE. Многие читатели спросили, как сделать то же самое для Firefox и Chrome. Поскольку у Firefox и Chrome нет встроенного COM-объекта Windows для VBA, нужен дополнительный шаг — установка Selenium VBA, Windows COM-обёртки для Selenium.

Selenium VBA позволяет из любого приложения с поддержкой VBA управлять браузером — не только IE. Это мощный инструмент автоматизации, который активно поддерживается и широко используется, а значит интеграция с браузерами будет работать ещё долго.

Кому это нужно и когда это помогает

  • Пользователям Excel, которые хранят списки URL и хотят открывать их пакетно в современном браузере.
  • Автоматизаторам задач, которым нужен браузерный доступ из макроса VBA.
  • Тем, кто хочет мигрировать сценарии из Internet Explorer в Firefox/Chrome.

Важно: Selenium VBA даёт управляемый доступ к браузеру, но не заменяет логики тестирования или проверки содержимого страницы. Для полноценных автоматизированных тестов лучше использовать полноценные фреймворки с CI/CD.

Установка Selenium VBA

  1. Скачайте Selenium VBA wrapper (компонент как COM-библиотеку). Обычно файл доступен в репозитории проекта. Убедитесь, что берёте версию, совместимую с вашей ОС и Excel.
  2. Установите компонент согласно инструкции установщика (обычно требуется права администратора).
  3. В некоторых случаях нужно установить соответствующий браузерный драйвер (geckodriver для Firefox, chromedriver для Chrome) и положить его в PATH или рядом с исполняемым файлом.

Примечание: не указываю конкретные ссылки и версии, чтобы не вводить в заблуждение. Поиск по названию “Selenium VBA” быстро найдёт актуальную версию.

Включение разработки макросов в Excel

  1. Откройте Excel и вкладку Разработчик. Если вкладка не отображается — включите её в Параметрах ленты.
  2. Нажмите “Режим конструктора”.
  3. Нажмите “Вставить” → ActiveX-кнопка и разместите её на листе.
  4. Кликните правой кнопкой по кнопке и выберите “Просмотр кода”.

Изображение: окно редактора VBA с кнопкой Load URLs

В правом нижнем углу редактора свойств измените поля Name и Caption, чтобы кнопка называлась понятно (например, cmdLoadURLs с надписью “Load URLs”).

Изображение: свойства ActiveX-кнопки в редакторе VBA

Далее включите ссылку на Selenium Wrapper:

  • В редакторе VBA зайдите в Tools → References.
  • Найдите “SeleniumWrapper Type Library” и установите галочку.
  • Нажмите OK.

Изображение: окно References с SeleniumWrapper

Теперь можно писать код, использующий объекты Selenium VBA.

Функциональность Selenium Wrapper — что он даёт

Selenium VBA предоставляет множество объектов и методов. Если в коде задать объект как New SeleniumWrapper, при вводе после точки появится автодополнение со всем набором свойств и методов: работа с изображениями, PDF, клавишами клавиатуры и др.

Изображение: автодополнение методов Selenium в VBA

В этом материале мы используем WebDriver. После создания WebDriver вы получите список методов и свойств для управления браузерной сессией.

Изображение: список методов WebDriver

Ознакомление с возможностями займёт время. Базовые примеры и онлайн-ресурсы помогут быстрее освоиться.

Пример кода VBA для открытия списка URL

Ниже — пример кода, который запускает Firefox и открывает URLы, перечисленные на листе Sheet1 в колонке A, начиная со строки 2.

Dim selenium As New SeleniumWrapper.WebDriver
Dim FF As Object
Dim intRowPosition As Integer
Dim keys As New SeleniumWrapper.keys
selenium.Start "firefox", "https://www.google.com"
selenium.setTimeout ("120000")
selenium.setImplicitWait (5000)
intRowPosition = 2
selenium.Open Sheet1.Range("A" & intRowPosition)

Описание ключевых строк:

  • Создаётся объект selenium как WebDriver.
  • selenium.Start открывает указанный браузер (здесь “firefox”) и стартовую страницу.
  • setTimeout и setImplicitWait задают тайм-ауты, предотвращая зависание при долгих ответах.
  • selenium.Open читает URL из ячейки и загружает страницу.

Изображение: пример списка URL на листе Excel

Далее — цикл, который переходит по строкам и открывает каждую ссылку в новой вкладке:

intRowPosition = intRowPosition + 1
While Sheet1.Range("A" & intRowPosition) <> vbNullString
 selenium.SendKeys keys.Control & "t"
 selenium.Open Sheet1.Range("A" & intRowPosition)
 intRowPosition = intRowPosition + 1
Wend
Set IE = Nothing

Этот цикл пробегает список до пустой ячейки и открывает каждую ссылку в новой вкладке с помощью комбинации Ctrl+T.

Изображение: браузер с несколькими вкладками, открытыми автоматом

Если вы хотите запускать Chrome, замените строку selenium.Start “firefox” на selenium.Start “chrome”.

Дополнения и расширения сценария

Ниже — набор практических улучшений, которые часто требуются при автоматизации в реальных задачах.

  • Управление тайм-аутами и ожиданиями: используйте setTimeout и setImplicitWait, а для явных ожиданий реализуйте собственную функцию ожидания элемента.
  • Обработка ошибок и повторные попытки: оборачивайте загрузку страницы в обработчик ошибок и повторяйте попытку с ограничением числа попыток.
  • Логирование: ведите лог открытых URL, ошибок и времени выполнения.
  • Параллельность: VBA не поддерживает параллельные потоки; для параллельного открытия требуются внешние решения.

Пример шаблона повторной попытки

Function OpenWithRetry(s As SeleniumWrapper.WebDriver, url As String, maxAttempts As Integer) As Boolean
 Dim attempt As Integer
 attempt = 0
 Do While attempt < maxAttempts
  On Error Resume Next
  s.Open url
  If Err.Number = 0 Then
   OpenWithRetry = True
   Exit Function
  End If
  Err.Clear
  attempt = attempt + 1
  Application.Wait Now + TimeValue("00:00:02")
 Loop
 OpenWithRetry = False
End Function

Этот шаблон не придумывает статистику и служит для безопасной повторной попытки загрузки.

Рекомендации по отладки

  • Используйте Debug.Print для вывода текущего URL и шагов алгоритма.
  • Проверяйте, что драйвер браузера доступен в PATH.
  • Запускайте код по шагам через F8, чтобы увидеть момент, где возникает ошибка.
  • Если браузер не реагирует на SendKeys, попробуйте использовать методы WebDriver поиска элементов и навигации.

Изображение: отображение текущего URL в отладчике

Типичные ошибки и способы их решения

  • Браузер не запускается: проверьте selenium.Start аргумент и наличие драйвера.
  • SendKeys не открывает новую вкладку: комбинации клавиш могут отличаться в локали или версии браузера; попробуйте альтернативный способ с JavaScript, который открывает window.open.
  • Код зависает: увеличьте тайм-ауты и добавьте явные ожидания.

Важно: не храните чувствительные данные (пароли, токены) в открытом виде в листах Excel. Для приватных сценариев храните секреты в зашифрованном виде и ограничьте доступ к файлам.

Чек-листы для ролей

Разделённые обязанности помогают быстрее внедрять автоматизацию.

Разработчик макросов:

  • Установить Selenium VBA и драйверы.
  • Реализовать основной сценарий открытия URL.
  • Добавить логирование и обработку ошибок.
  • Подготовить тестовый набор URL.

Бизнес-аналитик / Владелец процесса:

  • Подтвердить список URL и сценарий работы.
  • Определить критерии приёмки (см. ниже).
  • Убедиться в безопасном хранении данных.

Тестировщик:

  • Подготовить тесты на граничные случаи.
  • Проверить работу на разных версиях браузера.
  • Проверить поведение при потере сети.

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

  • Все URL из столбца A, начиная со строки 2, открываются в отдельных вкладках браузера.
  • Скрипт не зависает при недоступности URL: выполняется повторная попытка и логируется ошибка.
  • Скрипт работает в Firefox и Chrome при замене аргумента в selenium.Start.
  • Логи содержат время запуска и список успешно открытых URL.

Набор тестов и случаи проверки

  • Обычный набор URL: 5–10 валидных ссылок.
  • Пустая ячейка в середине списка: скрипт остановится на первой пустой и корректно завершится.
  • Некорректный URL: проверка, что лог фиксирует ошибку и продолжается обработка следующих ссылок.
  • Браузер не установлен: скрипт сообщает об ошибке и не падает с необработанным исключением.

Простая методология разработки сценария

  1. Опишите цель и входные данные (лист Excel, столбец A).
  2. Реализуйте минимум — открытие одного URL.
  3. Добавьте цикл по строкам и новую вкладку.
  4. Введите обработку ошибок и лог.
  5. Протестируйте на целевом окружении и зафиксируйте версию драйверов.

Настройки безопасности и приватность

  • Не храните учётные данные на листах без шифрования.
  • Ограничьте доступ к файлу Excel правами ОС.
  • При автоматизации форм, требующих логина, используйте безопасные хранилища паролей.

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

  • Использовать полноценные скрипты на Python с Selenium для более сложной логики и параллелизма.
  • Применять PowerShell + Selenium для администраторских сценариев.
  • Оставаться в рамках IE COM-объекта, если в вашей среде всё ещё поддерживается IE.

Decision tree: выбрать подход для автоматизации

flowchart TD
 A[Нужна автоматизация открытия URL из Excel?] --> B{Требуется только открытие вкладок}
 B -- Да --> C[Использовать Selenium VBA]
 B -- Нет --> D{Нужна обработка содержимого страниц}
 D -- Да --> E[Рассмотреть Python Selenium или фреймворк тестирования]
 D -- Нет --> F[Лёгкий скрипт на PowerShell или VBA]

Короткий глоссарий

  • Selenium VBA — COM-обёртка для Selenium, используется в VBA.
  • WebDriver — объект, управляющий браузерной сессией.
  • SendKeys — метод отправки нажатий клавиш в окно.

Заключение

Selenium VBA расширяет возможности Excel и VBA, позволяя управлять современными браузерами. Начните с простого сценария: прочитайте список URL из листа, откройте их в браузере и добавьте логирование. Затем итеративно улучшайте скрипт: добавьте обработку ошибок, повторные попытки и проверки. Экспериментируйте с автодополнением API в редакторе VBA — многие возможности откроются при простом введении имени объекта и точки.

Важно: не забывайте про безопасность данных и тестируйте скрипт в контролируемой среде.

Для следующего проекта попробуйте сделать простое приложение на VBA с элементами управления, которое позволит добавлять/редактировать список URL и запускать автоматизацию через кнопку.

Краткое резюме в конце.

Важно: заранее протестируйте совместимость драйверов и браузеров в вашей среде перед развёртыванием.

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

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

Использовать Android как модем — без рутирования
Android.

Использовать Android как модем — без рутирования

Настройка Проводника в Windows 11
Windows

Настройка Проводника в Windows 11

Outlook не получает письма Gmail — как исправить
Email

Outlook не получает письма Gmail — как исправить

Столбчатая диаграмма в Google Sheets — создание и настройка
Google Sheets

Столбчатая диаграмма в Google Sheets — создание и настройка

Как приостановить обновления Windows 10 на 35 дней
Windows

Как приостановить обновления Windows 10 на 35 дней

Как использовать xmonad — быстрый старт
Linux

Как использовать xmonad — быстрый старт