axis86 Пользователь Сообщений: 35 |
#1 11.04.2013 17:53:24 Здравствуйте! Подскажите, пожалуйста, как с помощью макроса можно открыть гиперссылку такого вида:
Пробовал так:
Обычные гиперссылки открываются, а формулы-гиперссылки — нет. Прикрепленные файлы
|
||||
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
Как получить адрес гиперссылки из ячейки Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
axis86 Пользователь Сообщений: 35 |
Вроде всё сделал как описано в статье, но не работает почему-то. Даже в этом примере, который в статье, не могу макросом открыть гиперссылку созданную формулой, а обычная открывается… Изменено: axis86 — 13.04.2013 22:35:50 |
EducatedFool Пользователь Сообщений: 3631 |
#4 13.04.2013 18:11:51 Это смотрели? http://excelvba.ru/code/FormulaHyperlinks#comment-1083
|
||
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#5 13.04.2013 18:21:21 Я не понимаю, в чем сложности применения кода по данной мной ссылке? Добавили функцию к себе и переходите так:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Дима, в его случае это не работает, — Evaluate надо применять к начинке функции, а не как у ТС: Evaluate(ActiveCell.Formula) Потому что у него ссылка составная — из нескольких ячеек собирается. |
|
axis86 Пользователь Сообщений: 35 |
#7 15.04.2013 11:41:31
Спасибо, огромное! Работает как часы!
Уже решил проблему самостоятельно Изменено: axis86 — 15.04.2013 12:05:49 |
||||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#8 15.04.2013 12:14:31 axis86, а в данном случае цитирование обязательно? Не пробовали ПРОСТО ответить? |
Этот макрос позволяет открыть в браузере все гиперссылки из выделенного диапазона ячеек.
Зачем нужен такой макрос, если можно щелкнуть на гиперссылке, и она так же откроется в браузере?
- Некоторые гиперссылки могут быть неактивными, то есть в ячейку просто введен текст, содержащий ссылку
В этом случае придется вручную копировать содержимое ячейки, и вставлять в браузер - Гиперссылок может быть много, и щелкать на каждой из них — долго
- Некоторые гиперссылки не открываются в браузере, и Excel выдаёт ошибку.
Причина этого: Excel сначала сам прогружает ссылку, и только если ему удалось прогрузить страницу, только после этого он отправляет её в браузер. Мало того что это иногда сильно увеличивает время открытия ссылок, так иногда и не даёт открыть некоторые рабочие ссылки, где на сайте нужна авторизация (или если ссылка не открывается в Internet Explorer, но открывается в современном браузере)
Скопируйте нижеприведённый код в свой файл Excel, а назначьте кнопке или комбинации клавиш макрос OpenHyperlinksInBrowser:
Sub OpenHyperlinksInBrowser() ' макрос открытия гиперссылок в браузере по умолчанию ' © 2022 ExcelVBA.ru On Error Resume Next Dim hl$, coll As New Collection, msg$, cell As Range, link, i&, cellValue$ ' перебираем все непустые ячейки For Each cell In Intersect(ActiveSheet.UsedRange, Selection).Cells If Len(cell) Then ' считываем гиперссылку из ячейки hl$ = "": hl$ = GetCellHyperlinkAddress(cell, True) For i = 1 To 2000 DoEvents ' пауза Next If hl$ Like "http*://?*.?*" Then coll.Add hl$ If coll.Count > 20 Then Exit For ' ограничение на максимум 20 гиперссылок End If Next cell If coll.Count > 6 Then ' если выделено много ссылок - запрашиваем подтверждение msg$ = "Уверены, что хотите открыть в браузере сразу " & coll.Count & " ссылок?" If MsgBox(msg$, vbDefaultButton2 + vbOKCancel) = vbCancel Then Exit Sub End If For Each link In coll ' перебираем найденные ссылки CreateObject("WScript.Shell").Run link ' открываем ссылку link в браузере по умолчанию Next End Sub Function GetCellHyperlinkAddress(ByRef cell As Range, Optional AllowInactiveURL As Boolean = False) As String ' функция извлечения гиперссылки из ячейки ' поддерживаются активные и неактивные ссылки, и также формульные гиперссылки On Error Resume Next Dim v$ With cell.MergeArea.Hyperlinks(1) GetCellHyperlinkAddress = .Address If Len(GetCellHyperlinkAddress) Then If Len(.SubAddress) Then GetCellHyperlinkAddress = GetCellHyperlinkAddress & "#" & .SubAddress Exit Function End If End With If AllowInactiveURL Then v$ = cell.Value: If InStr(1, v$, "://") > 0 Then If v$ Like "http*://?*.?*" Then GetCellHyperlinkAddress = v$: Exit Function Dim txt$, Brackets&, Quotes&, i& If GetCellHyperlinkAddress = "" Then If cell.Formula Like "=HYPERLINK*" Then txt$ = Mid$(cell.Formula, 12) txt$ = Left(txt, Len(txt) - 1) For i& = 1 To Len(txt) Select Case Mid(txt, i, 1) Case "(": Brackets& = Brackets& + 1 Case ")": Brackets& = Brackets& - 1 Case """": Quotes& = Quotes& + 1 Case "," If (Brackets& = 0) And (Quotes& Mod 2 = 0) Then txt = Left(txt, i - 1) Exit For End If End Select Next GetCellHyperlinkAddress = Evaluate(txt) End If End If Err.Clear End Function
- 629 просмотров
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
Открытие гиперссылок в столбце макросом |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
How to open a website in the browser from Excel using a Macro and VBA.
This is the same as following a link or clicking a link from the worksheet except that it will be done through a Macro.
This does not open a website within Excel. Everything will still open in the browser.
The Macro
Here is the full macro that you need:
Sub Go_to_Website()
Dim ie As Object
Set ie = CreateObject("INTERNETEXPLORER.APPLICATION")
ie.NAVIGATE "http://www.google.com"
ie.Visible = True
While ie.busy
DoEvents
Wend
End Sub
This is a simple macro and it will open the website into Internet Explorer by default.
To use the macro, change http://www.google.com to whatever website you want the user to visit.
You can also replace this with a variable that holds the website url in order to make this a bit more versatile. In that case, you would just replace «http://www.google.com» with the desired variable name and without the double quotation marks around the variable name.
This is a fairly simple macro and you should not need to change anything other than what I just mentioned.
If you don’t know how to put this macro into Excel, you can read this tutorial here: Install a Macro into Excel
Make sure to download the sample file attached to this tutorial so you can get the macro ready to go in Excel.
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
Similar Content on TeachExcel
Open any Program from Excel
Macro: This free excel macro allows you to open any program on your computer from excel. You…
Login to a Website using a Macro
: Connect and login to a website using a macro in Excel.
This allows you to open a website a…
Open Microsoft Outlook from Excel
Macro: This free macro will open the Microsoft Outlook program on your computer. You do need…
Open Microsoft Word from Excel
Macro: This free macro will open the Microsoft Word program on your computer. You do need to have…
Open Microsoft PowerPoint from Excel
Macro: This free macro will open the Microsoft PowerPoint program on your computer. You do need t…
Make Users Enable Macros in Order to View a Workbook in Excel
Tutorial: Tutorial showing you how to make a user enable macros in a workbook in order to view the w…
Subscribe for Weekly Tutorials
BONUS: subscribe now to download our Top Tutorials Ebook!
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Video
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
Вставленные в таблицу Excel ссылки не всегда становятся активными, из-за чего переход по ним в одно нажатие попросту невозможен. В таких случаях ссылку необходимо активировать, чтобы дальнейшее взаимодействие с ней было более удобным. Для этого есть разные способы, каждый из которых подойдет в определенных ситуациях.
Вариант 1: Вставка ссылки из браузера
Excel работает таким образом, что при копировании ссылки из адресной строки веб-обозревателя она сразу же становится активной. Используйте этот метод, если нужно вставить новые строки в таблицу, а не редактировать уже существующие. Найдите требуемую страницу в браузере и скопируйте ее, выделив и используя комбинацию клавиш Ctrl + C.
Перейдите в Microsoft Excel, после чего вставьте ссылку в подходящую ячейку, подогнав ее по размеру. Выберите любую другую клетку для редактирования, чтобы заметить, как применяется изменение к этой. Теперь вы можете нажать ЛКМ по ссылке, чтобы сразу открыть ее в браузере по умолчанию.
Прочитайте текст на всплывающей подсказке, появляющейся при наведении курсора на саму ссылку: в ней есть информация о том, что переход происходит при одинарном нажатии, а для выделения необходимо кликнуть и удерживать кнопку мыши. Это поможет разобраться с редактированием, если ранее вы с ним не работали.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Вариант 2: Самостоятельная активация ссылки
Разберу вариант, когда ссылка уже вставлена в таблицу, но не является активной. Этот же метод подойдет в тех случаях, когда нужно сделать слово или надпись с адресом в виде ссылки, по которой и будет осуществлен переход при нажатии.
-
Выделите ячейку со ссылкой или надписью, после чего нажмите по ней ПКМ.
-
Из появившегося контекстного меню выберите пункт «Ссылка», открыв соответствующее окно с настройками.
-
Если сейчас ссылка представлена в поле «Текст», ее необходимо скопировать и перенести в поле «Адрес».
-
Вместо ссылки в поле «Текст» вы можете вписать любую надпись, нажатие по которой отвечает за переход по ссылке, вставленной в поле «Адрес».
-
Примените изменения и вернитесь к таблице. На следующем скриншоте вы видите результат активации ссылки с заменой ее текста на более уместный.
Думаю, принцип использования окна «Ссылка» вам понятен, и проблем с переименованием возникнуть не должно. Используйте такой метод, когда нужно заменить громоздкую ссылку на лаконичную надпись, которая не будет нарушать внешний вид таблицы, но при этом останется функционально полезной.
Вариант 3: Использование макроса
Последний вариант самый необычный и подходит в редких случаях. Чаще всего он применим, когда в таблице уже есть перечень ссылок, находящихся в рамках одного столбца, но при этом они неактивны. Активировать каждую при помощи представленных выше инструкций можно, но это займет много времени. Проще сделать это при помощи специального макроса.
-
Для начала через главное окно перейдите в меню «Параметры».
-
Выберите раздел «Настроить ленту» и поставьте галочку возле основной вкладки «Разработчик». Так вы обеспечите ее отображение в верхней панели программы, что нам сейчас и пригодится.
-
Примените изменения, вернитесь к таблице, перейдите на соответствующую вкладку и запустите оснастку «Visual Basic».
-
Дважды щелкните по файлу книги, чтобы справа отобразилось окно редактирования кода.
-
Вставьте туда оставленный ниже код, заменив значения «a2» на номер ячейки, с которой начинается активация ссылок, а «а» – на букву столбца.
Sub HyperSsylka() Dim cell As Range, ra As Range: Application.ScreenUpdating = False Set ra = Range([a2], Range("a" & Rows.Count).End(xlUp)) For Each cell In ra.Cells If Len(cell) Then cell.Hyperlinks.Add cell, cell Next cell End Sub Sub HyperSsylkaSelect() Dim cell As Range: Application.ScreenUpdating = False For Each cell In Selection If Len(cell) Then cell.Hyperlinks.Add cell, cell Next cell End Sub
Строку для редактирования вы видите на следующем изображении.
-
Сохраните результат, нажав по соответствующей кнопке на панели сверху или используя сочетание клавиш Ctrl + S.
-
Закройте редактор кода и запустите окно «Макрос». Дважды щелкните по строке с созданным макросом для активации ссылок.
-
Все изменения выполняются автоматически, а далее вам остается только убедиться в том, что вместо обычного текста появились активные ссылки, переход по которым возможен (если в их содержимом действительно находится веб-адрес).
Все перечисленные варианты работают в любых ситуациях, а выбор зависит исключительно от того, с какой задачей столкнулись лично вы. Конечно, для активации одной ссылки не захочется создавать макрос, а вот для массовой обработки он окажется как никогда кстати.
Открытие сайта методом Workbook.FollowHyperlink с помощью кода VBA Excel. Сокращенный синтаксис метода, примеры использования.
Метод Workbook.FollowHyperlink
FollowHyperlink – это метод объекта Workbook, позволяющий открыть сайт по указанному адресу в браузере, использующемуся по умолчанию.
Метод Workbook.FollowHyperlink предназначен для более широкого использования в VBA Excel, чем просто открытие сайтов. С полным описанием и всеми параметрами метода вы можете ознакомиться на сайте разработчика.
В этой же статье мы рассмотрим сокращенный синтаксис метода Workbook.FollowHyperlink с одним аргументом: адрес сайта.
Сокращенный синтаксис метода
Сокращенный синтаксис метода Workbook.FollowHyperlink представлен в VBA Excel двумя равнозначными вариантами:
Вариант 1
ThisWorkbook.FollowHyperlink Address:=«http://imya-sayta.ru/» |
Вариант 2
ThisWorkbook.FollowHyperlink («http://imya-sayta.ru/») |
Примечания
1. Для сайтов на защищенном протоколе «https» можно указывать протокол «http», так как у защищенных сайтов есть переадресация с «http» на «https».
2. Если сайт по указанному адресу не существует, будет сгенерирована ошибка.
Примеры использования
Пример 1
Открытие сайта нажатием элемента управления Label на пользовательской форме VBA Excel:
‘Записываем адрес сайта ‘в заголовок метки Label1 Private Sub UserForm_Initialize() With Label1 .Caption = «http://imya-sayta.ru/» .Font.Size = 10 .Font.Underline = True End With End Sub ‘Переходим по гиперссылке ‘при нажатии на метку Label1 Private Sub Label1_Click() On Error Resume Next ThisWorkbook.FollowHyperlink _ Address:=Label1.Caption End Sub |
Выражение On Error Resume Next
необходимо, чтобы корректно завершить процедуру при возникновении ошибки, когда указанный сайт не существует. Если хотите вывести сообщение об ошибке, используйте простой обработчик ошибок с оператором On Error GoTo
.
Пример 2
Пример выбора сайта с помощью элемента управления ComboBox с автоматическим открытием гиперссылки и обработчиком ошибок:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
‘Записываем адреса сайтов ‘в комбинированный список Private Sub UserForm_Initialize() With ComboBox1 .AddItem «http://sayt-1.ru/» .AddItem «http://sayt-2.ru/» .AddItem «http://sayt-3.ru/» .AddItem «http://sayt-4.ru/» .AddItem «http://sayt-5.ru/» End With End Sub ‘Переходим по гиперссылке ‘при выборе сайта в списке Private Sub ComboBox1_Change() On Error GoTo Stroka ThisWorkbook.FollowHyperlink _ Address:=ComboBox1.Value Exit Sub Stroka: If Err.Description <> «» Then MsgBox «Произошла ошибка: « _ & Err.Description End If End Sub |
Так как в списке из примера перечислены несуществующие сайты, при выборе одного из них, обработчик ошибок выведет следующее сообщение:
Содержание
- Способ 1: Копирование ссылки через браузер
- Способ 2: Использование инструмента «Ссылка»
- Способ 3: Создание макроса для быстрой активации ссылок
- Вопросы и ответы
Способ 1: Копирование ссылки через браузер
Редактировать ссылку не придется, если изначально знать, как правильно добавить ее в Excel. При наличии возможности скопировать адрес через строку в браузере, лучше сразу же сделайте это, а затем переходите к вставке ссылки в таблицу.
Для этого можно использовать любой веб-обозреватель, активировав копирование через контекстное меню или горячую клавишу Ctrl + C.
В таблице Эксел выберите подходящую ячейку и нажмите Ctrl + V для вставки скопированной ранее ссылки. Переключитесь на любую другую ячейку, чтобы увидеть, как строка подсвечивается синим, а это значит, ссылка является активной.
Способ 2: Использование инструмента «Ссылка»
Использование предыдущего способа даже с целью замены уже добавленных строк — не всегда лучший вариант, особенно когда речь идет о создании нескольких активных ссылок сразу же. В этом случае более простым методом считается инструмент «Ссылка», присутствующий в рассматриваемой программе.
- Найдите строку, где строка должна быть активной ссылкой, и нажмите по ней правой кнопкой мыши.
- В появившемся контекстном меню щелкните по последней строке «Ссылка».
- В текущей ситуации потребуется выбрать вариант «файлом, веб-страницей» в блоке «Связать с:».
- Скопируйте текущий текст, если он уже является необходимой для перехода ссылкой, а затем вставьте его в поле «Адрес» и примените изменения.
- Вернитесь к таблице и убедитесь в правильности выполненных действий. Осуществите то же самое с остальными ячейками, ссылки в которых необходимо сделать активными.
- Точно так же поступите и с ячейками, где изначально вместо текста ссылки расположена обычная надпись. Вставьте в строку «Адрес» название сайта для перехода и примените новые настройки.
Способ 3: Создание макроса для быстрой активации ссылок
Пользовательский макрос, активирующий все добавленные ссылки в определенном столбце, пригодится пользователям, столкнувшимся с задачей редактирования группы ссылок, по которым не удается перейти прямо из таблицы. В этом случае потребуются инструменты разработчика, поэтому заранее активируйте их следующим образом:
- После открытия таблицы перейдите на первую вкладку «Файл».
- На панели слева выберите раздел «Параметры».
- Откройте меню «Настроить ленту».
- Отметьте маркером вкладку «Разработчик», чтобы добавить ее в ленту.
Закройте окно настроек и переходите к созданию макроса, о чем мы поговорим в инструкции ниже.
- За создание макросов в Excel отвечает отдельный модуль, для запуска которого перейдите на вкладку «Разработчик».
- Оттуда запустите «Visual Basic».
- Дважды щелкните по строке «ЭтаКнига», открывающей окно создания макроса.
- Вставьте следующее содержимое и замените «c2» и «c» в выделенной на скриншоте строке на буквы и начало столбца, где и расположены ссылки для активации.
Sub HyperSsylka()
Dim cell As Range, ra As Range: Application.ScreenUpdating = False
Set ra = Range([c2], Range("c" & Rows.Count).End(xlUp))
For Each cell In ra.Cells
If Len(cell) Then cell.Hyperlinks.Add cell, cell
Next cell
End Sub
Sub HyperSsylkaSelect()
Dim cell As Range: Application.ScreenUpdating = False
For Each cell In Selection
If Len(cell) Then cell.Hyperlinks.Add cell, cell
Next cell
End Sub - Осталось только щелкнуть «Сохранить» или использовать горячую клавишу Ctrl + S, после чего закройте средство создания макросов.
- Сейчас настройки все еще не применены, поэтому откройте окно «Макросы».
- В нем активируйте созданный нами макрос под названием «HyperSsylka».
- Вернитесь к таблице и убедитесь в том, что теперь все ссылки подсвечиваются должным образом.
Еще статьи по данной теме:
Помогла ли Вам статья?
Макрокод может быть очень полезным для нас при решении некоторых сложных задач в Excel, обычно мы можем выполнить его в Microsoft Visual Basic для приложений окно, нажав Run или нажатие F5 ключ. Но пробовали ли вы когда-нибудь запускать макросы, щелкая относительные гиперссылки на листе?
Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA
Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA
Нам может быть интересно запустить макрос, щелкнув гиперссылку в Excel, следующий метод может помочь вам выполнить эту задачу шаг за шагом:
1. Создайте гиперссылки, которые вы хотите использовать для выполнения кодов макросов. Щелкните ячейку и создайте гиперссылку для ссылки на себя, см. Снимок экрана:
2. Повторите вышеуказанный шаг, чтобы создать другие гиперссылки, которые вы хотите использовать, как показано на следующем снимке экрана:
3. Затем щелкните правой кнопкой мыши вкладку листа, содержащую гиперссылки, которые вы хотите использовать, и выберите Просмотреть код из контекстного меню, а в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:
Код VBA: запускать коды макросов из гиперссылок:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address = "$B$6" Then
Call Macro1
End If
If Target.Range.Address = "$B$8" Then
Call Macro2
End If
End Sub
Внимание: В приведенном выше коде B6 и B8 содержат ли ячейки гиперссылки, которые вы хотите использовать, и Macro1 и Macro2 являются кодовыми названиями макросов, измените их по своему усмотрению.
4. Затем сохраните и закройте окно кода, с этого момента, когда вы щелкаете гиперссылку, конкретный код макроса будет выполняться сразу.
Статьи по теме:
Как запустить макрос при изменении значения ячейки в Excel?
Как запустить макрос на основе значения ячейки в Excel?
Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?
Как запустить макрос автоматически перед печатью в Excel?
Как запустить макрос, когда лист выбран из книги?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (5)
Оценок пока нет. Оцените первым!