У Стива есть диапазон ячеек (A1: A10), содержащий адреса веб-сайтов, например www.example.com. Он задается вопросом, можно ли в макросе открыть каждый из этих адресов в браузере сразу на отдельных вкладках браузера.

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

Sub FollowHyperlinks1()

Dim MyRange As Range     Dim hl As Hyperlink

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each hl In MyRange.Hyperlinks         hl.Follow     Next hl End Sub

Макрос просто просматривает все гиперссылки в диапазоне A1: A10 и использует метод Follow, чтобы открыть каждую из них в браузере по умолчанию.

Из-за того, как ваша операционная система передает информацию из Excel в ваш браузер, рекомендуется открыть браузер перед запуском макроса. Причина этого в том, что при тестировании мы обнаружили, что на самом деле вы можете открыть два экземпляра браузера, при этом некоторые адреса открыты в одном экземпляре, а некоторые — в другом.

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

Если адреса на вашем листе могут не быть активными гиперссылками, вы не можете полагаться на использование коллекции гиперссылок для диапазона.

Вместо этого вам нужно посмотреть значение каждой ячейки в диапазоне:

Sub FollowHyperlinks2()

Dim MyRange As Range     Dim cell As Range     Dim sTemp As String

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each cell In MyRange         sTemp = cell.Value         ThisWorkbook.FollowHyperlink Address:=sTemp     Next cell End Sub

Этот подход использует метод FollowHyperlink для загрузки адреса в переменную sTemp. В этом случае не имеет значения, являются ли содержимое ячеек активными гиперссылками или нет; код по-прежнему пытается открыть их в браузере.

Наконец, если ваши данные могут не содержать полностью квалифицированных адресов, вам все равно придется использовать другой подход. Например, Стив упомянул, что в таблице есть такие адреса, как www.example.com, но такой адрес пока не будет работать с примерами. Если в ваших данных отсутствует http: // в начале (или какой-либо вариант, например https: //), то код не откроет адрес в браузере. В ваших данных есть эта особенность, тогда в макрос можно внести небольшие изменения:

Sub FollowHyperlinks3()

Dim MyRange As Range     Dim cell As Range     Dim sTemp As String

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each cell In MyRange         sTemp = cell.Value         If InStr(sTemp, "://") = 0 Then             sTemp = "http://" & sTemp         End If         ThisWorkbook.FollowHyperlink Address:=sTemp     Next cell End Sub

Обратите внимание, что в этом примере проверяется содержимое sTemp на предмет наличия в нем символов «: //». В противном случае к содержимому ячейки добавляется префикс http: //, и Excel пытается использовать метод FollowHyperlink, чтобы открыть измененный адрес.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11414) применим к Microsoft Excel 2007, 2010, 2013 и 2016.

Вы можете найти версию этого совета для более старого интерфейса меню Excel здесь: link: / excel-Opening_Sites_in_a_Browser [Открытие сайтов в браузере].