Макрос для гиперссылок excel

Создание гиперссылки в VBA Excel методом Hyperlinks.Add для перехода на другой лист, на интернет-сайт, для открытия любого файла в программе по умолчанию.

Hyperlinks.Add — это метод, который добавляет новую гиперссылку к указанному объекту Range (диапазону, ячейке) или объекту Shape (фигуре).

Синтаксис

Expression.Add (Anchor, Address, SubAddress, ScreenTip, TextToDisplay)

Expression — выражение (переменная), возвращающее объект Hyperlinks.

Параметры

Параметр Описание
Anchor Объект Range или объект Shape, к которому привязывается (добавляется) новая гиперссылка. Обязательный параметр. Тип данных — Object.
Address Адрес гиперссылки. Обязательный параметр. Тип данных — String.
SubAddress Субадрес гиперссылки. Необязательный параметр. Тип данных — Variant.
ScreenTip Всплывающая подсказка, отображаемая при наведении указателя мыши на текст гиперссылки. Необязательный параметр. Тип данных — Variant.
TextToDisplay Текст гиперссылки. Необязательный параметр. Тип данных — Variant.

Если текст гиперссылки (TextToDisplay) не указан, будет отображен текст параметров Address и SubAddress.

Создание гиперссылки на рабочий лист другой книги:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A4»), Address:=«C:UsersEvgeniyDesktopКнига2.xlsx», _

    SubAddress:=«Лист3!D5», ScreenTip:=«Гиперссылка на Лист3!D5 в Книга2», TextToDisplay:=«Книга2 — Лист3!D5»

Создание гиперссылки на другой лист текущей книги:

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=«», _

    SubAddress:=«Лист4!D6», TextToDisplay:=«Эта книга — Лист4!D6»

Создание гиперссылки на другую ячейку того же листа:

Worksheets(«Лист1»).Hyperlinks.Add Anchor:=Range(«A1»), Address:=«», _

    SubAddress:=«Лист1!D6», TextToDisplay:=«Перейти к D6»

Создание гиперссылки на документ Word:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A1»), Address:=«C:UsersEvgeniyDocumentsДокумент 1.docx», _

    TextToDisplay:=«Ссылка на Документ 1»

Создание гиперссылки на точечный рисунок:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A1»), Address:=«C:UsersEvgeniyDocumentsРисунок 1.bmp», _

    TextToDisplay:=«Ссылка на Рисунок 1»

Пример добавления гиперссылки на рубрику «VBA Excel» сайта «Время не ждёт»:

ActiveSheet.Hyperlinks.Add Anchor:=Range(«A1»), Address:=«https://vremya-ne-zhdet.ru/category/vba-excel/», _

    TextToDisplay:=«Рубрика VBA Excel»

Поиск первой ячейки с гиперссылкой в заданном диапазоне:

Sub Primer()

Dim myRange As Range, n As Integer, i As Integer, s As String

‘Задаем диапазон поиска

Set myRange = Range(«A1:G10»)

‘Вычисляем количество ячеек в заданном диапазоне

n = myRange.Cells.Count

‘Ищем первую ячейку с гиперссылкой

    For i = 1 To n

        If myRange.Cells(i).Hyperlinks.Count > 0 Then

            s = myRange.Cells(i).Address

            Exit For

        End If

    Next

MsgBox s

End Sub

Для поиска последней ячейки с гиперссылкой в заданном диапазоне следует заменить строку
For i = 1 To n
на
For i = n To 1 Step -1.


Вставка гиперссылок на листы в Excel макрос

Добрый день уважаемые читатели блога! После небольшого перерыва возобновляю работу по Excel. Вопросов накопилось довольно много — буду отвечать на них по очереди. 

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

Вставка гиперссылок на листы в Excel макрос

Вставить вручную гиперссылки можно, пусть для этого и понадобится чуть больше времени. Обычно мы вставляем гиперссылки через вкладку «Вставка» и кнопку «Гиперссылка», а затем переходим на пункт «Место в документе».

Вставка гиперссылок на листы в Excel макрос

Видите, уже сложнее. Проделать такую операцию с точки зрения лени времени будет слишком затратно.  Поэтому напишем небольшой макрос. 

Вставим в наш документ новый модуль:

  1. Вкладка «Разработчик», блок кнопок «Код», кнопка «Visual Basic»;
  2. Далее «Insert» — > «Module».

Вставка гиперссылок на листы в Excel макрос

Поместим в поле кода следующий текст:

Sub SheetNamesAsHyperLinks()
Dim sheet As Worksheet
Dim cell As Range
With ActiveWorkbook
‘ Для каждого листа (имени) создадим свою ссылку
For Each sheet In ActiveWorkbook.Worksheets
Set cell = Worksheets(1).Cells(sheet.Index, 1)
.Worksheets(1).Hyperlinks.Add Anchor:=cell, Address:=»», _
SubAddress:=» » & sheet.Name & «!A1»
cell.Formula = sheet.Name
Next
End With
End Sub

Немного подробностей:

  • у нас есть две переменные «sheet» и «cell», лист и ячейка;
  • «With activeWorkbook» — показывает, что макрос будет оперировать пространством всей книги;
  • «For Each sheet In ActiveWorkbook.Worksheets
    Set cell = Worksheets(1).Cells(sheet.Index, 1)
    .Worksheets(1).Hyperlinks.Add Anchor:=cell, Address:=»», _
    SubAddress:=» » & sheet.Name & «!A1» « » — для каждого листа в рабочей книге мы будем использовать первую ячейку (А1);
  • «cell.Formula = sheet.Name» — формула для макроса будет помещение в ячейку A1 названия первого листа книги, далее в A2 второго и т.д.

Таким образом, мы экономим себе время на переходах, так как не отвлекаемся на нижнюю часть экрана с именами листов, а имеем список листов в виде гиперссылок. Понаблюдаем за результатами работы. Нажимаем сочетание клавиш ALT+F8 или переходим на вкладку «Разработчик», нажимаем кнопку «Макросы», у нас единственная строка «SheetNamesAsHyperLinks», нажимаем «Выполнить».

Вставка гиперссылок на листы в Excel макрос

На листе «Оглавление» появится список всех существующих листов в нашей рабочей книге.

Вставка гиперссылок на листы в Excel макрос

Теперь мы можем просто щёлкать ячейку с именем листа для перехода. 

Если что-то было непонятно, посмотрите наше видео!

Вас может заинтересовать урок — Поменять строки местами.

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

Вариант 1: Вставка ссылки из браузера

Excel работает таким образом, что при копировании ссылки из адресной строки веб-обозревателя она сразу же становится активной. Используйте этот метод, если нужно вставить новые строки в таблицу, а не редактировать уже существующие. Найдите требуемую страницу в браузере и скопируйте ее, выделив и используя комбинацию клавиш Ctrl + C.

Копирование адреса для активации ссылки в Excel

Перейдите в Microsoft Excel, после чего вставьте ссылку в подходящую ячейку, подогнав ее по размеру. Выберите любую другую клетку для редактирования, чтобы заметить, как применяется изменение к этой. Теперь вы можете нажать ЛКМ по ссылке, чтобы сразу открыть ее в браузере по умолчанию. 

Вставка адреса в поле для активации ссылки в Excel

Прочитайте текст на всплывающей подсказке, появляющейся при наведении курсора на саму ссылку: в ней есть информация о том, что переход происходит при одинарном нажатии, а для выделения необходимо кликнуть и удерживать кнопку мыши. Это поможет разобраться с редактированием, если ранее вы с ним не работали. Информация об адресе в ячейке для активации ссылки в Excel

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Вариант 2: Самостоятельная активация ссылки

Разберу вариант, когда ссылка уже вставлена в таблицу, но не является активной. Этот же метод подойдет в тех случаях, когда нужно сделать слово или надпись с адресом в виде ссылки, по которой и будет осуществлен переход при нажатии. 

  1. Выделите ячейку со ссылкой или надписью, после чего нажмите по ней ПКМ.Выбор ячейки для активации ссылки в Excel

  2. Из появившегося контекстного меню выберите пункт «Ссылка», открыв соответствующее окно с настройками.Переход в меню Ссылка для активации ссылки в Excel

  3. Если сейчас ссылка представлена в поле «Текст», ее необходимо скопировать и перенести в поле «Адрес».Перенос текста в адрес для активации ссылки в Excel

  4. Вместо ссылки в поле «Текст» вы можете вписать любую надпись, нажатие по которой отвечает за переход по ссылке, вставленной в поле «Адрес».Изменение текста ячейки для активации ссылки в Excel

  5. Примените изменения и вернитесь к таблице. На следующем скриншоте вы видите результат активации ссылки с заменой ее текста на более уместный.Просмотр результата для активации ссылки в Excel

Думаю, принцип использования окна «Ссылка» вам понятен, и проблем с переименованием возникнуть не должно. Используйте такой метод, когда нужно заменить громоздкую ссылку на лаконичную надпись, которая не будет нарушать внешний вид таблицы, но при этом останется функционально полезной.

Вариант 3: Использование макроса

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

  1. Для начала через главное окно перейдите в меню «Параметры».Переход в Параметры для активации ссылки в Excel

  2. Выберите раздел «Настроить ленту» и поставьте галочку возле основной вкладки «Разработчик». Так вы обеспечите ее отображение в верхней панели программы, что нам сейчас и пригодится.Включение вкладки Разработчик для активации ссылки в Excel

  3. Примените изменения, вернитесь к таблице, перейдите на соответствующую вкладку и запустите оснастку «Visual Basic».Переход к созданию макроса для активации ссылки в Excel

  4. Дважды щелкните по файлу книги, чтобы справа отобразилось окно редактирования кода.Создание макроса для активации ссылки в Excel

  5. Вставьте туда оставленный ниже код, заменив значения «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

    Строку для редактирования вы видите на следующем изображении. Редактирование макроса для активации ссылки в Excel

  6. Сохраните результат, нажав по соответствующей кнопке на панели сверху или используя сочетание клавиш Ctrl + S.Сохранение макроса для активации ссылки в Excel

  7. Закройте редактор кода и запустите окно «Макрос». Дважды щелкните по строке с созданным макросом для активации ссылок.Применение макроса для активации ссылки в Excel

  8. Все изменения выполняются автоматически, а далее вам остается только убедиться в том, что вместо обычного текста появились активные ссылки, переход по которым возможен (если в их содержимом действительно находится веб-адрес).Проверка макроса для активации ссылки в Excel

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

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

Зачем нужен такой макрос, если можно щелкнуть на гиперссылке, и она так же откроется в браузере?

  • Некоторые гиперссылки могут быть неактивными, то есть в ячейку просто введен текст, содержащий ссылку
    В этом случае придется вручную копировать содержимое ячейки, и вставлять в браузер
  • Гиперссылок может быть много, и щелкать на каждой из них — долго
  • Некоторые гиперссылки не открываются в браузере, и 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
  • 642 просмотра

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

Макрокод может быть очень полезным для нас при решении некоторых сложных задач в Excel, обычно мы можем выполнить его в Microsoft Visual Basic для приложений окно, нажав Run или нажатие F5 ключ. Но пробовали ли вы когда-нибудь запускать макросы, щелкая относительные гиперссылки на листе?

Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA


стрелка синий правый пузырь Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA

Нам может быть интересно запустить макрос, щелкнув гиперссылку в Excel, следующий метод может помочь вам выполнить эту задачу шаг за шагом:

1. Создайте гиперссылки, которые вы хотите использовать для выполнения кодов макросов. Щелкните ячейку и создайте гиперссылку для ссылки на себя, см. Снимок экрана:

макрос запуска документа из гиперссылки 1

2. Повторите вышеуказанный шаг, чтобы создать другие гиперссылки, которые вы хотите использовать, как показано на следующем снимке экрана:

макрос запуска документа из гиперссылки 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

макрос запуска документа из гиперссылки 3

Внимание: В приведенном выше коде B6 и B8 содержат ли ячейки гиперссылки, которые вы хотите использовать, и Macro1 и Macro2 являются кодовыми названиями макросов, измените их по своему усмотрению.

4. Затем сохраните и закройте окно кода, с этого момента, когда вы щелкаете гиперссылку, конкретный код макроса будет выполняться сразу.


Статьи по теме:

Как запустить макрос при изменении значения ячейки в Excel?

Как запустить макрос на основе значения ячейки в Excel?

Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?

Как запустить макрос автоматически перед печатью в Excel?

Как запустить макрос, когда лист выбран из книги?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Макрос для генерации случайных чисел excel
  • Макрос для пустых ячеек excel
  • Макрос для выделения строки цветом в excel
  • Макрос для программы word
  • Макрос для выбора даты в excel