Как массово изменить гиперссылки в excel
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Как массово изменить гиперссылки?
В этой статье я покажу как можно быстро и качественно изменить адреса гиперссылок на листе Excel.
Существуют ситуации, когда на листе есть много гиперссылок(если еще на знакомы с гиперссылками — Что такое гиперссылка?) на различные папки или интернет ресурсы. И иногда случаются ситуации когда адреса этих гиперссылок надо поменять. Как правило это происходит если либо домен сменился, либо на сервере добавилась директория и эти изменения надо отразить в гиперссылках, либо все просто было перемещено в другую папку. Для примера возьмем такие исходные данные: надо заменить текст ссылки .excel_vba на текст excel-vba .
Прежде чем начать замену необходимо еще определить каким способом установлена гиперссылка. Если установлена через формулу ГИПЕРССЫЛКА (HYPERLINK) , то все просто:
- выделяем диапазон с гиперссылками;
- жмем Ctrl + H .
- Найти: .excel_vba
- Заменить на: excel-vba
- Жмем кнопочку «Параметры» и устанавливаем Область поиска — Формулы и снимаем галочку «Ячейка целиком«
- Жмем «Заменить все«
Теперь адреса ссылок должны поменяться.
Все гораздо сложнее, если гиперссылки были созданы через стандартное меню: правый клик мыши на ячейке — Гиперссылка. Тут фокус с заменой через Ctrl + H не пройдет. В таких случаях придется прибегнуть к помощи VBA(Visual Basic for Applications) или как еще называют эти коды — макросы. Текст такого макроса:
Sub Replace_Hyperlink() Dim rCell As Range, rRange As Range, sWhatRep As String, sRep As String On Error Resume Next Set rRange = Application.InputBox("Укажите диапазон для замены", "Выбор данных", Type:=8) If rRange Is Nothing Then Exit Sub sWhatRep = InputBox("Что меняем?", "Ввод данных", ".excel_vba") sRep = InputBox("На что меняем?", "Ввод данных", "excel-vba") If sWhatRep = "" Then Exit Sub If sRep = "" Then If MsgBox("Хотите заменить " & sWhatRep & " на пусто?", vbCritical + vbYesNo, "Предупреждение") = vbNo Then Exit Sub End If Application.ScreenUpdating = 0 For Each rCell In rRange If rCell.Hyperlinks.Count > 0 Then If rCell.Hyperlinks(1).Address = rCell.Value Then rCell = Replace(rCell.Value, sWhatRep, sRep) End If If rCell.Hyperlinks(1).Address <> "" Then rCell.Hyperlinks(1).Address = Replace(rCell.Hyperlinks(1).Address, sWhatRep, sRep) End If If rCell.Hyperlinks(1).SubAddress <> "" Then rCell.Hyperlinks(1).SubAddress = Replace(rCell.Hyperlinks(1).SubAddress, sWhatRep, sRep) End If End If Next rCell Application.ScreenUpdating = 1 End Sub
Sub Replace_Hyperlink() Dim rCell As Range, rRange As Range, sWhatRep As String, sRep As String On Error Resume Next Set rRange = Application.InputBox(«Укажите диапазон для замены», «Выбор данных», Type:=8) If rRange Is Nothing Then Exit Sub sWhatRep = InputBox(«Что меняем?», «Ввод данных», «.excel_vba») sRep = InputBox(«На что меняем?», «Ввод данных», «excel-vba») If sWhatRep = «» Then Exit Sub If sRep = «» Then If MsgBox(«Хотите заменить » & sWhatRep & » на пусто?», vbCritical + vbYesNo, «Предупреждение») = vbNo Then Exit Sub End If Application.ScreenUpdating = 0 For Each rCell In rRange If rCell.Hyperlinks.Count > 0 Then If rCell.Hyperlinks(1).Address = rCell.Value Then rCell = Replace(rCell.Value, sWhatRep, sRep) End If If rCell.Hyperlinks(1).Address <> «» Then rCell.Hyperlinks(1).Address = Replace(rCell.Hyperlinks(1).Address, sWhatRep, sRep) End If If rCell.Hyperlinks(1).SubAddress <> «» Then rCell.Hyperlinks(1).SubAddress = Replace(rCell.Hyperlinks(1).SubAddress, sWhatRep, sRep) End If End If Next rCell Application.ScreenUpdating = 1 End Sub
Как все это использовать:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем Alt + F11 и выбираем макрос Replace_Hyperlink (или создаем кнопку для вызова макроса на листе)
- в первом диалоговом окне указываем в каком диапазоне надо найти гиперссылки и заменить в них адрес
- во втором диалоговом окне указываем какой текст заменить
- в третьем диалоговом окне указываем на что заменить указанный в первом окне текст
Примерно так же можно заменить гиперссылки в объектах на листе(например, картинках и кнопках):
Sub Replace_Hyperlink_inShape() Dim oSh As Shape, sWhatRep As String, sRep As String Dim s As String sWhatRep = InputBox("Что меняем?", "Ввод данных", "www.excel-vba.com") sRep = InputBox("На что меняем?", "Ввод данных", "www.excel-vba.ru") On Error Resume Next For Each oSh In ActiveSheet.Shapes s = "" s = oSh.Hyperlink.Address If s <> "" Then oSh.Hyperlink.Address = Replace(oSh.Hyperlink.Address, sWhatRep, sRep) End If Next End Sub
Sub Replace_Hyperlink_inShape() Dim oSh As Shape, sWhatRep As String, sRep As String Dim s As String sWhatRep = InputBox(«Что меняем?», «Ввод данных», «www.excel-vba.com») sRep = InputBox(«На что меняем?», «Ввод данных», «www.excel-vba.ru») On Error Resume Next For Each oSh In ActiveSheet.Shapes s = «» s = oSh.Hyperlink.Address If s <> «» Then oSh.Hyperlink.Address = Replace(oSh.Hyperlink.Address, sWhatRep, sRep) End If Next End Sub
Данные код работает почти так же как и предыдущий:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем Alt + F11 и выбираем макрос Replace_Hyperlink_inShape (или создаем кнопку для вызова макроса на листе)
- в первом диалоговом окне указываем какой текст заменить
- во втором диалоговом окне на что заменить указанный в первом окне текст
Гиперссылки всех объектов на листе будут изменены. Если у объекта нет гиперссылки — объект будет пропущен.
Чтобы заменить гиперссылки только в выделенных объектах необходимо строку
For Each oSh In ActiveSheet.Shapes
заменить на такую:
For Each oSh In Selection.ShapeRange
тогда надо будет выделить объекты на листе, для которых необходимо заменить гиперссылки, и запустить макрос.
Пример замены гиперссылок.xls (58,0 KiB, 12 189 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Как массово изменить гиперссылки в excel

Всем привет! Как-то на работе столкнулся на работе с интересной задачей. Во время работе Excel выдал ошибку и закрыл окно. После попытки открыть файла оказалось, что все гиперссылки в документе изменили часть своего пути.
- Открываем VBA (Visual Basic for Applications) через Alt+F11
- В окне Project-VBAProject (левой верхнее) правой кнопкой мыши делаем Insert — Module
- В появившемся большом окне вставляем код макроса вида с нашими ссылками (первая ссылка — что нужно поменять, вторая — на что нужно поменять)
Sub Hyper() For i = 1 To ActiveSheet.Hyperlinks.Count ActiveSheet.Hyperlinks(i).Address = Replace(ActiveSheet.Hyperlinks(i).Address, "../../../AppData/Roaming/Microsoft/Excel/", "\Users\User\Desktop\Фирма\Договора\") Next End Sub
4. Закрываем VBA.
5. Через Сервис — Макрос — Макросы ( или по Alt+F8) выбираем макрос и нажимаем «Выполнить».
Пути гиперссылкок будут заменены. Проверено — работает!
Спасибо за помощь http://forum.ixbt.com/topic.cgi?id=23:33826
- Не обновляется содержимое папок в Проводнике Windows
- Как снять защиту с файла Excel
- Excel. Импорт .csv файлов в UTF-8 кодировке
- Как изменить цвет фона и шрифта командной строки Windows
- Notepad++. Как изменить синтаксис по умолчанию
Posted in WINDOWS and tagged excel.
One Comment
Пользователь скопировал к себе с сервера на комп файл, при этом адрес множества гиперссылок приняли вид «..AppDataRoamingMicrosoftExcelВходящие,%20исходящие305293131975136761ЭЛЕКТРОННЫЙ%20АРХИВИсходящие%202016%20гИмя_файла». Текст ячеек имеет вид «ЭЛЕКТРОННЫЙ АРХИВИсходящие 2016 гИмя_файла». Используя макрос, указываю диапазон проблемных ячеек. В поле «Что меняем» вставляю «..AppDataRoamingMicrosoftExcelВходящие,%20исходящие305293131975136761ЭЛЕКТРОННЫЙ%20АРХИВИсходящие%202016%20г», в поле «На что меняем» указываю путь «\имя_сервераимя_сетевой_шарыЭЛЕКТРОННЫЙ АРХИВИсходящие 2016 г», но эффекта 0. Пробовал как диапазон так и 1 ячейку. В этом же файле создаю произвольную гиперссылку \тесттест и макрос её меняет на \что_угодночто_угодно. Буду рад помощи
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
покупка
Как изменить сразу несколько путей гиперссылок в Excel?
Для некоторых целей вы можете создать несколько гиперссылок для своих данных на листе, и все гиперссылки связаны с одним и тем же путем или адресом файла, но теперь вам нужно заменить этот путь гиперссылки на другой адрес за раз. Изменение пути гиперссылок по отдельности может тратить много времени, есть ли быстрый способ решить эту проблему?
Одновременное изменение нескольких путей гиперссылок на листе с помощью кода VBA
Предположим, у вас есть список данных с теми же гиперссылками, что и на следующем снимке экрана, и с кодом VBA, вы можете быстро заменить старый путь к файлу или адрес на листе новым.

1. Удерживая нажатой ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модули, и вставьте следующий макрос в Окно модуля.
Код VBA: изменить сразу несколько путей гиперссылок
Sub ReplaceHyperlinks() 'Updateby Extendoffice Dim Ws As Worksheet Dim xHyperlink As Hyperlink Dim xOld As String, xNew As String xTitleId = "KutoolsforExcel" Set Ws = Application.ActiveSheet xOld = Application.InputBox("Old text:", xTitleId, "", Type:=2) xNew = Application.InputBox("New text:", xTitleId, "", Type:=2) Application.ScreenUpdating = False For Each xHyperlink In Ws.Hyperlinks xHyperlink.Address = Replace(xHyperlink.Address, xOld, xNew) Next Application.ScreenUpdating = True End Sub
3, Затем нажмите F5 ключ для запуска этого кода и окно подсказки, позволяющее ввести старый адрес гиперссылки в Старый текст коробка. Смотрите скриншот:

4. Нажмите OK, и появится другое окно подсказки, напоминающее вам о вводе нового адреса гиперссылки, который вы хотите использовать.

5, Затем нажмите OK, все те же старые адреса гиперссылок были сразу заменены на новые. Смотрите скриншоты:
![]() |
![]() |
![]() |
Одновременное изменение нескольких путей гиперссылок на листе / книге / нескольких листах / выделении с помощью удивительной функции
Если вы хотите заменить пути гиперссылок из выделенного фрагмента, нескольких листов, текущей рабочей книги или нескольких книг, как вы могли бы это сделать? С участием Найти и заменить особенность Kutools for Excel, вы быстро справитесь с этой задачей.
Примечание: Чтобы применить это Найти и заменить утилиту, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Кутулс > Навигация, см. снимок экрана:

2. В открытом Навигация панели, нажмите Найти и заменить в Найти и заменить панели, нажмите Замените tab, а затем выполните следующие операции:
- Введите текст старой гиперссылки, которую хотите найти, в Найти то, что текстовое поле, а затем введите новый текст гиперссылки, который вы хотите заменить, в поле Заменить текстовое окно;
- Укажите область, в которой вы хотите найти, и замените путь гиперссылки из В раскрывающийся список;
- Затем выберите «Гиперссылки» в раскрывающемся списке «Искать в»;
- Наконец, нажмите Найти все Кнопка, все соответствующие ячейки, содержащие конкретный текст гиперссылки, перечислены в нижнем списке.

3, Затем нажмите Заменить все кнопки старые пути гиперссылок были сразу изменены на новые, см. снимок экрана:

Больше относительных статей:
- Извлечение фактических адресов из гиперссылок
- Предположим, у вас есть диапазон ячеек, которые содержат гиперссылки, и теперь вам нужно увидеть реальное назначение гиперссылок и извлечь их из гиперссылок, как показано на следующем снимке экрана. Есть ли простые способы быстро решить эту проблему?
- Преобразование URL-адресов изображений в реальные изображения в Excel
- Если у вас есть список URL-адресов изображений в столбце A, и теперь вы хотите загрузить соответствующие изображения из URL-адресов и отобразить их в соседнем столбце B, как показано на скриншоте слева. Как в Excel быстро и легко извлечь реальные изображения из URL-адресов изображений?
- Преобразование текста URL в интерактивную гиперссылку в Excel
- Предположим, у вас есть несколько URL-адресов на вашем листе, но они не связаны, и теперь вам нужно преобразовать все несвязанные URL-адреса в интерактивные гиперссылки, как показано на следующих снимках экрана. Конечно, вы можете дважды щелкнуть их один за другим, чтобы сделать их интерактивными, но это займет много времени, если URL-адресов много. Как в Excel можно автоматически преобразовать несколько несвязанных URL-адресов в интерактивные гиперссылки?
- Откройте определенную страницу PDF-документа из гиперссылки Excel
- Когда вы связываете ячейку с файлом PDF, обычно вы переходите на первую страницу файла PDF, когда щелкаете, чтобы открыть гиперссылку. Если вам нужно напрямую перейти к определенной странице PDF-файла, щелкнув гиперссылку, эта статья может оказать вам услугу.

