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

Ключ к автоматизации — выполнять задачи быстрее и проще, чем вы делали раньше. Подумайте, какие операции занимают у вас много времени. Какие части рабочего процесса вы хотели бы автоматизировать?
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
- Скачайте Selenium VBA wrapper (компонент как COM-библиотеку). Обычно файл доступен в репозитории проекта. Убедитесь, что берёте версию, совместимую с вашей ОС и Excel.
- Установите компонент согласно инструкции установщика (обычно требуется права администратора).
- В некоторых случаях нужно установить соответствующий браузерный драйвер (geckodriver для Firefox, chromedriver для Chrome) и положить его в PATH или рядом с исполняемым файлом.
Примечание: не указываю конкретные ссылки и версии, чтобы не вводить в заблуждение. Поиск по названию “Selenium VBA” быстро найдёт актуальную версию.
Включение разработки макросов в Excel
- Откройте Excel и вкладку Разработчик. Если вкладка не отображается — включите её в Параметрах ленты.
- Нажмите “Режим конструктора”.
- Нажмите “Вставить” → ActiveX-кнопка и разместите её на листе.
- Кликните правой кнопкой по кнопке и выберите “Просмотр кода”.
В правом нижнем углу редактора свойств измените поля Name и Caption, чтобы кнопка называлась понятно (например, cmdLoadURLs с надписью “Load URLs”).
Далее включите ссылку на Selenium Wrapper:
- В редакторе VBA зайдите в Tools → References.
- Найдите “SeleniumWrapper Type Library” и установите галочку.
- Нажмите OK.
Теперь можно писать код, использующий объекты Selenium VBA.
Функциональность Selenium Wrapper — что он даёт
Selenium VBA предоставляет множество объектов и методов. Если в коде задать объект как New SeleniumWrapper, при вводе после точки появится автодополнение со всем набором свойств и методов: работа с изображениями, PDF, клавишами клавиатуры и др.
В этом материале мы используем 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 из ячейки и загружает страницу.
Далее — цикл, который переходит по строкам и открывает каждую ссылку в новой вкладке:
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 поиска элементов и навигации.
Типичные ошибки и способы их решения
- Браузер не запускается: проверьте 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: проверка, что лог фиксирует ошибку и продолжается обработка следующих ссылок.
- Браузер не установлен: скрипт сообщает об ошибке и не падает с необработанным исключением.
Простая методология разработки сценария
- Опишите цель и входные данные (лист Excel, столбец A).
- Реализуйте минимум — открытие одного URL.
- Добавьте цикл по строкам и новую вкладку.
- Введите обработку ошибок и лог.
- Протестируйте на целевом окружении и зафиксируйте версию драйверов.
Настройки безопасности и приватность
- Не храните учётные данные на листах без шифрования.
- Ограничьте доступ к файлу 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 и запускать автоматизацию через кнопку.
Краткое резюме в конце.
Важно: заранее протестируйте совместимость драйверов и браузеров в вашей среде перед развёртыванием.
Похожие материалы
Использовать Android как модем — без рутирования
Настройка Проводника в Windows 11
Outlook не получает письма Gmail — как исправить
Столбчатая диаграмма в Google Sheets — создание и настройка
Как приостановить обновления Windows 10 на 35 дней