Использование VBA для автоматизации сеансов Internet Explorer из электронной таблицы Excel

Его интеграция с Windows позволяет несколькими удивительными способами управлять Internet Explorer, используя сценарий Visual Basic для приложений (VBA) из любого приложения, которое его поддерживает, например Word, Outlook или Excel.

Автоматизация VBA — особенно прямая автоматизация браузера, такого как IE, как вы увидите в этой статье, — это как раз то, что превращает VBA из удобного сценария программирования в мощный язык автоматизации. Что делает его таким удивительным, так это тот факт, что многие приложения с элементами управления или объектами создаются просто для того, чтобы позволить вам интегрироваться в них с использованием языка программирования VBA.

За прошедшие годы мы показали вам, как делать действительно классные вещи с VBA. Например, вы можете использовать его для отправки электронных писем непосредственно из Excel

, вы можете автоматически экспортировать задачи Outlook в электронную таблицу Excel

и вы даже можете создать свой собственный интернет-браузер

! Это не только продукты Microsoft. Существуют сторонние приложения от разных производителей, которые интегрировали VBA и совместимые объекты в свое программное обеспечение — от Adobe Acrobat SDK до ObjectARX SDK для AutoCAD — есть способы «подключить» больше приложений, чем вы, вероятно, представляете.

Идея

В этом случае вы собираетесь подключить Excel с IE. Почему IE? Поскольку Internet Explorer настолько хорошо интегрирован с операционной системой, что вам не нужно много делать, чтобы начать использовать автоматизацию IE в VBA в других продуктах Microsoft, таких как Word или Excel. В этом вся прелесть. В этой статье вы увидите, как работает эта автоматизация, а в следующей статье вы узнаете, как сделать то же самое с другими браузерами.

Здесь я покажу вам, казалось бы, простое приложение, но у него есть множество приложений, в которых вы можете использовать этот код для выполнения множества интересных вещей с помощью вашего браузера. Суть в том, что вы собираетесь создать электронную таблицу Excel с целью быстрого сохранения всех открытых окон браузера одним нажатием кнопки. Вы можете сохранить эту таблицу и уйти или выключить компьютер.

Вернитесь через час или три дня спустя, откройте электронную таблицу, нажмите другую кнопку, и эти сохраненные URL-адреса откроются на том же количестве вкладок, что и раньше. Очевидным классным вариантом использования этого было бы хранить целую библиотеку стандартных сетевых настроек рабочего пространства в Excel. Затем вы можете восстановить это рабочее пространство одним нажатием кнопки без необходимости повторного поиска всех этих URL-адресов.

Автоматизация Internet Explorer с помощью VBA

Первое, что нужно сделать, это открыть Excel (я использую 2013 — другие версии похожи в программировании на VBA) и перейти в пункт меню Developer. Внутри вы увидите кнопку вставки, которая опускает все ваши элементы управления. Выберите элемент управления ActiveX и поместите его в электронную таблицу.

IE-automation1

Предположительно, вы уже создали заголовок для URL, если хотите, но вам это не нужно. Это действительно библиотека хранения URL, поэтому заголовки не имеют значения. Как только вы добавите кнопку, дважды щелкните по ней, чтобы открыть редактор VBA. Внизу слева вы увидите свойства вашей новой кнопки.

Переименуйте его в что-то вроде cmdSaveURLs и установите для заголовка «Сохранить URL-адреса» — это означает, что это кнопка для сохранения всех открытых URL-адресов из браузера IE.

Спаси URLs

Затем перейдите в меню «Сервис» в верхней части редактора VBA, нажмите «Ссылки» в меню и прокрутите длинный список, чтобы найти ссылку «Microsoft Internet Controls». Установите флажок слева от него и нажмите кнопку ОК.

IE-automation3

Теперь вы готовы к работе. В текстовой области редактора вы должны увидеть строку «Private Sub cmdSaveURLs_Click ()». Если вы его не видите, щелкните левое раскрывающееся поле над текстовой областью и найдите cmdSaveURLs в списке. Выберите его, и он создаст функцию Click () для вас.

Это код, который вы хотите вставить в эту функцию:

я IE как объект
Dim shellWins As New ShellWindows
Dim IE_TabURL As String
Dim intRowPosition как целое число
intRowPosition = 2
Для каждого IE в shellWins
IE_TabURL = IE.LocationURL
Если IE_TabURL vbNullString, то
Sheet1.Range ( "A"  intRowPosition) = IE_TabURL
intRowPosition = intRowPosition + 1
Конец, если
следующий
Установить shellWins = Nothing
Установить IE = ничего

[/ NOEDIT]

Ссылка Microsoft Scripting Runtime позволяет вам получить доступ к объекту ShellWindows, который позволяет вам перебирать Windows и находить экземпляры IE, которые у вас открыты. Этот скрипт найдет все открытые вами URL-адреса и запишет их в электронную таблицу Excel.

IE-automation4

Таким образом, теоретически, если вы работаете над чем-то вроде ведения блога, и у вас открыто несколько элементов, таких как окна исследований, редактор блога или окно календаря — все эти вкладки будут активными. Если вам нужно завершить работу или уйти в спешке, может быть очень трудно сохранить свое местоположение, скопировав все эти URL-адреса.

IE-automation5

С новым скриптом Excel просто нажмите кнопку «Загрузить URL-адреса», и он загрузится прямо в электронную таблицу.

IE-automation6

Одно предостережение. Если вы не используете строку заголовка, то вы захотите изменить строку «intRowPosition = 2» на «intRowPosition = 1», и она будет начинаться с первой строки, а не пропускать строку заголовка.

Открытие сохраненной рабочей области браузера

Следующий этап этого проекта — пойти в другом направлении. Нажмите «Загрузить URL-адреса», чтобы Excel запустил IE и перезагрузил все те URL-адреса, которые вы сохранили в электронной таблице. Вот как должна выглядеть функция cmdLoadURLs_Click ().

Тусклый IE как объект
Dim shellWins As New ShellWindows
Dim IE_TabURL As String
Dim intRowPosition как целое число
intRowPosition = 2
Установить IE = CreateObject ("InternetExplorer.Application")
IE.Visible = True
IE.Navigate Sheet1.Range ("A"  intRowPosition)
Пока IE.Busy
DoEvents
венед
intRowPosition = intRowPosition + 1
В то время как Sheet1.Range ("A"  intRowPosition) vbNullString
IE.Navigate Sheet1.Range ("A"  intRowPosition), CLng (2048)
Пока IE.Busy
DoEvents
венед
intRowPosition = intRowPosition + 1
венед
Установить IE = ничего

[/ NOEDIT]

Здесь есть несколько шагов, но, как вы видите, код не такой длинный и сложный. Вы создаете новый экземпляр IE, делаете его видимым (это откроет IE без загрузки URL). Затем он загрузит первый URL в списке.

IE-automation8

Часть скрипта «Пока IE.Busy» ждет, пока страница не загрузится полностью, а затем переходит к остальным URL-адресам в вашей электронной таблице, открывая новую вкладку (это то, что делает «CLng (2048)», пока он попадает в пустую ячейку вашей электронной таблицы, затем он прекращает открывать новые вкладки.Это мой браузер IE со всеми четырьмя исходными вкладками, восстановленными с помощью сценария автоматизации Excel IE.

IE-automation9

Резюме

Моя настоящая цель — сделать так, чтобы отдельные таблицы создавали наборы вкладок для таких задач, как исследование и запись в моем собственном блоге, запись в MakeUseOf, выполнение SEO-проектов на сайте или полный список других ролей или проектов, которые требуют сохраненная коллекция вкладок, которые всегда используются.

Использование электронных таблиц для хранения этих настроек и автоматизация их открытия в браузере может сэкономить много времени … и на самом деле это тоже довольно здорово.

Используете ли вы какой-либо вид автоматизации IE в своих приложениях VBA? Видите какие-нибудь другие интересные варианты использования такого элемента управления IE из Excel? Поделитесь своими мыслями и отзывами в разделе комментариев ниже!

Ссылка на основную публикацию
Adblock
detector