Хитрости »
30 Май 2011 156271 просмотров
Как массово изменить гиперссылки?
В этой статье я покажу как можно быстро и качественно изменить адреса гиперссылок на листе 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
Как все это использовать:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем 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
Данные код работает почти так же как и предыдущий:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем Alt+F11 и выбираем макрос Replace_Hyperlink_inShape (или создаем кнопку для вызова макроса на листе)
- в первом диалоговом окне указываем какой текст заменить
- во втором диалоговом окне на что заменить указанный в первом окне текст
Гиперссылки всех объектов на листе будут изменены. Если у объекта нет гиперссылки — объект будет пропущен.
Чтобы
заменить гиперссылки только в выделенных объектах
необходимо строку
For Each oSh In ActiveSheet.Shapes
заменить на такую:
For Each oSh In Selection.ShapeRange
тогда надо будет выделить объекты на листе, для которых необходимо заменить гиперссылки, и запустить макрос.
Скачать пример
Пример замены гиперссылок.xls (58,0 KiB, 11 337 скачиваний)
Так же см.:
Что такое гиперссылка?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Всем привет! Как-то на работе столкнулся на работе с интересной задачей. Во время работе 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/", "UsersUserDesktopФирмаДоговора") Next End Sub
4. Закрываем VBA.
5. Через Сервис — Макрос — Макросы ( или по Alt+F8) выбираем макрос и нажимаем «Выполнить».
Пути гиперссылкок будут заменены. Проверено — работает!
Спасибо за помощь http://forum.ixbt.com/topic.cgi?id=23:33826
Posted in WINDOWS and tagged excel.
Содержание
- Как массово изменить гиперссылки?
- Как массово изменить гиперссылки?
- Как массово изменить гиперссылки в Excel?
- Все гораздо сложнее, если гиперссылки были созданы через стандартное меню:
- Макрос для исправления повреждённых гиперссылок во всей книге Excel
- Комментарии
В этой статье я покажу как можно быстро и качественно изменить адреса гиперссылок на листе 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
Как все это использовать:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем 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
Данные код работает почти так же как и предыдущий:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем Alt + F11 и выбираем макрос Replace_Hyperlink_inShape (или создаем кнопку для вызова макроса на листе)
- в первом диалоговом окне указываем какой текст заменить
- во втором диалоговом окне на что заменить указанный в первом окне текст
Гиперссылки всех объектов на листе будут изменены. Если у объекта нет гиперссылки — объект будет пропущен.
Чтобы заменить гиперссылки только в выделенных объектах необходимо строку
For Each oSh In ActiveSheet.Shapes
заменить на такую:
For Each oSh In Selection.ShapeRange
тогда надо будет выделить объекты на листе, для которых необходимо заменить гиперссылки, и запустить макрос.
Пример замены гиперссылок.xls (58,0 KiB, 11 249 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Источник
В этой статье я покажу как можно быстро и качественно изменить адреса гиперссылок на листе 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
Как все это использовать:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем 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
Данные код работает почти так же как и предыдущий:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем Alt + F11 и выбираем макрос Replace_Hyperlink_inShape (или создаем кнопку для вызова макроса на листе)
- в первом диалоговом окне указываем какой текст заменить
- во втором диалоговом окне на что заменить указанный в первом окне текст
Гиперссылки всех объектов на листе будут изменены. Если у объекта нет гиперссылки — объект будет пропущен.
Чтобы заменить гиперссылки только в выделенных объектах необходимо строку
For Each oSh In ActiveSheet.Shapes
заменить на такую:
For Each oSh In Selection.ShapeRange
тогда надо будет выделить объекты на листе, для которых необходимо заменить гиперссылки, и запустить макрос.
Пример замены гиперссылок.xls (58,0 KiB, 11 249 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Источник
В этой статье я покажу как можно быстро и качественно изменить адреса гиперссылок на листе Excel.
Существуют ситуации, когда на листе есть много гиперссылок(если еще на знакомы с гиперссылками на различные папки или интернет ресурсы. И иногда случаются ситуации когда адреса этих гиперссылок надо поменять. Как правило это происходит если либо домен сменился, либо на сервере добавилась директория и эти изменения надо отразить в гиперссылках, либо все просто было перемещено в другую папку. Для примера возьмем такие исходные данные: надо заменить текст ссылки .excel_vba на текст excel-vba .
Прежде чем начать замену необходимо еще определить каким способом установлена гиперссылка. Если установлена через формулу ГИПЕРССЫЛКА, то все просто:
- выделяем диапазон с гиперссылками;
- жмем Ctrl+H.
- Найти: .excel_vba
- Заменить на: excel-vba
- Жмем кнопочку «Параметры» и устанавливаем Область поиска — Формулы и снимаем галочку «Ячейка целиком«
- Жмем «Заменить все«
Теперь адреса ссылок должны поменяться.
правый клик мыши на ячейке — Гиперссылка. Тут фокус с заменой через Ctrl+H не пройдет. В таких случаях придется прибегнуть к помощи VBA(Visual Basic for Applications) или как чаще называют эти коды — макросы. Текст такого макроса:
Как все это использовать:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем Alt+F11 и выбираем макрос Replace_Hyperlink (или создаем кнопку для вызова макроса на листе)
- в первом диалоговом окне указываем в каком диапазоне надо найти гиперссылки и заменить в них адрес
- во втором диалоговом окне указываем какой текст заменить
- в третьем диалоговом окне указываем на что заменить указанный в первом окне текст
Примерно так же можно заменить гиперссылки в объектах на листе(например, картинках и кнопках):
Данные код работает почти так же как и предыдущий:
- создаем стандартный модуль и помещаем в него код макроса выше
- жмем Alt+F11 и выбираем макрос Replace_Hyperlink_inShape (или создаем кнопку для вызова макроса на листе)
- в первом диалоговом окне указываем какой текст заменить
- во втором диалоговом окне на что заменить указанный в первом окне текст
Гиперссылки всех объектов на листе будут изменены. Если у объекта нет гиперссылки — объект будет пропущен.
Чтобы заменить гиперссылки только в выделенных объектах необходимо строку
For Each oSh In ActiveSheet.Shapes
заменить на такую:
For Each oSh In Selection.ShapeRange
тогда надо будет выделить объекты на листе, для которых необходимо заменить гиперссылки, и запустить макрос.
Скачать пример: Пример замены гиперссылок.xls (58,0 KiB, 8 817 скачиваний)
Источник
Макрос для исправление повреждённых гиперссылок во всей книге:
Если нужно заменить несколько вариантов неверных ссылок, код будет таким:
Расширенная версия этого макроса учитывает, что слеш в ссылках может быть как прямым, так и обратным, а также выводит информацию о количестве произведённых замен, и список ссылок из файла, которые не были обработаны (к которым замены не были применены)
Комментарии
Елена, это уже совсем другой макрос нужен.
Можем сделать под заказ. От 1500 руб.
Скажите, пожалуйста, как сделать, чтобы макрос по введенной уже гиперссылке проверял наличие объекта сначала по указанному адресу (1) и если оттуда объект уже перенесен, адрес менялся на другой (2). Гиперссылка создается на папки объектов на удаленном сервере, а со временем они переносятся в другую папку- архив. Надеюсь понятно написала.
Не знаю что даже сказать. Магия сработала. Спасибо разработчик большое! Здоровья тебе и твоим близким.
Спасибо Дружище. Желаю тебе всего хорошего, чего сам себе желаешь.
Отличный макрос! Спасибо!
Автор, спасибо огромное!
Спасибо ОГРОМНОЕ . Помогло, заменил 267 гиперссылок.
Спасибо автору! Макрос помог!
Благодарю тебя за то что ты есть, и написал такой прекрасный макрос.
Ты спас годовую работу трех человек.
Поcле выполнения макроса, ссылки не меняются и выпадает сообщение: Заменено гиперссылок 0. Также в файле найдены ссылки на: и перечисляются гиперссылки.
Сработал расширенный макрос,
более 5000 адресов исправлены на коректные
Огромная благодарность
Дай Бог тебе здоровья автор
Добрый день! Прогнал расширенную версию макроса, он отработал, но не все. после нажатия на ошибочную гиперссылку и дальнейшим запуском макроса он ее отрабатывает, а остальные просто выводит в протокол что они есть.
Я спасён!
Огромное спасибо за помощь! Помогли сэкономить огромный вал рабочего времени!
Огромно спасибо. Автоматически исправил более 5 тысяч ссылок в архиве. Все работает. Ну просто нет слов, как я Вам признателен.
СПАСИБО ОГРОМНОЕ ЗА ВАШ РЕСУРС И ДОБРОТУ.
Правда, Ваш макрос у меня не работает почему-то, цель сделать из абсолютных ссылок относительные.но выяснилось, что вполне работает обычное «найти и заменить»
в строку «найти» пишем кусок пути ДО нужной папки, а в «заменить» оставляем пустоту, ставим галку «во всей книге» и жмем «заменить все»
пс, на всяк случай
изначальный вид ссылки был C:UsersSVETLANADesktopКрит дефектовка — копияВилла114.11.2016 16-38-43_PB148421.JPG
файл excel лежит в папке Вилла1
В найти и заменить меняю C:UsersSVETLANADesktopКрит дефектовка — копия на пусто
На другом компьютере ссылки работают корректно
Слетели все ссылки после вставки автосохраненного файла. Почему то данный макрос не работает
Sub ZamenaIsporchennihGiperssilok()
On Error Resume Next
Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet
‘ part of hyperlink, which you want to change
oldString = «C:UsersDianaGAAppDataRoamingMicrosoftExcel»
‘ to what to change
newString = «C:UsersDianaGADekstopÀÁÌ — 2015»
For Each sh In ActiveWorkbook.Worksheets ‘ ïåðåáèðàåì âñå ëèñòû â àêòèâíîé êíèãå
For Each hl In sh.Hyperlinks ‘ ïåðåáèðàåì âñå ãèïåðññûëêè íà ëèñòå
If hl.Address Like «*» & oldString & «*» Then
hl.Address = Replace(hl.Address, oldString, newString)
End If
Next
Next sh
End Sub
Никаких действий не происходит
Тут ничего особенного делать не надо, — Excel сам все гиперссылки в книге подправит, как только вы лист переименуете.
Добрый вечер всем! Выручайте! Как изменить имя листа книги в Excel при этом не потеряв гиперссылки? Заранее благодарю!
Спасибо тебе, добрый человек!
Благодарность не знает границ! Спасибо очень выручили!)))
Автор, огромное вам СПАСИБО. Очень выручили
Доброго дня! Подскажите, пожалуйста, код макроса, который бы в выделенном диапазоне ячеек (каждая из которых ссылается в относительном режиме на какую-то ячейку этого же листа) заменил все относительные ссылки на абсолютные.
vitamax555, а какое отношение ваш вопрос имеет к теме статьи, — замене гиперссылок?
На вопросы «не в тему» не отвечаю
Доброго дня! Подскажите, пожалуйста, у меня есть экселевский файл и в нем прописан код VBA. Вроде бы работал правильно, но мне нужно было изменить данные, так как не правильно тянул часть данных из исходника. Как только изменил данные и исходник, данные стали грузиться правильно, однако очень долго. Так раньше на это требовалось около 1 минуты, теперь это занимает 10. Что мне делатать. Подскажите, пожалуйста! Спасибо!
Почему то макрос меняет гиперссылку только в одной ячейке, следующую не трогает. Приходится запускать столько раз, сколько ячеек. Как будто цикл не срабатывает.
Здравствуйте, Юрий
Достаточно убрать цикл по листам,
применяя изменения только к активному листу:
Спасибо! Очень выручила данная статья!
Но как всегда возник вопрос — как изменить данный макрос, что бы изменения коснулись только ОДНОГО листа в книге? (Файлов больших несколько, листов в каждом масса, соответственно разбирать файл по листам а потом собирать его обратно — очень долгий и не совсем желаемый процесс. )
Заранее СПАСИБО.
целую твои умелые ручки, автор!
Вот в этом и проблема, когда я папку с (эксель и файлами) перемещаю на другой комп у меня остается адрес гиперссылки моего компа (где находилась папка изначально)
Здравствуйте, Владимир
Так не получится, — Excel (тем более, если он не запущен) не отслеживает перемещение файлов и папок.
Да и как Excel узнает, где искать перемещенные файлы. мало ли куда вы их перенесете, вдруг вообще на другой комп.
Надо делать гиперссылки относительными (чтобы путь прописывался относительно файла Excel)?
а папку с файлами держать в той же папке. где сохранён файл Excel, и не переименовывать.
Тогда,если переносите на другой комп файл Excel вместе с папкой, гиперссылки вроде должны сохранять работоспособность.
подскажите, проблема такая, в экселе перестали работать гиперссылка, я взял макрос поменял часть гиперссылки и он начал работать, но когда папку (с файлами и экселем) отправляю, или перемещаю на другой жесткий диск они перестают работать, приходится опять переделывать через макрос гиперссылку.
вопрос можно ли сделать так что бы при переносе папки на другой диск, все менялась автоматически? (когда делаешь в новом экселе гиперссылку и переносишь всю папку куда либо все меняется автоматом)
Здравствуйте, Татьяна.
Так вы перенесите файлы на другой комп в ту же папку (чтобы путь к папке не изменился), — и тогда ничего переделывать не придётся.
А если путь к папке изменится, — тогда макрос этот поможет.
Как запустить макрос — объяснять не буду (об этом в интернете много написано, в т.ч. есть видеоинструкции)
В макросе надо будет только задать, что на что менять (в коде указать старый путь к папке, и новый)
Попробуйте, — всё очень просто.
PS: Чтобы вставить макрос в файл, надо нажать сначала Alt + F11, потом Ctrl + R, потом Enter, — и в появившееся большое текстовое поле скопировать код из статьи.
Здравствуйте!
Я в вопросе макросов вообще новичок, вернее никогда с ними не работала, поэтому прошу помощи в следующем вопросе. Я создала файл в EXELе со множеством гиперссылок на разные файлы, эти файлы во многих папках, но эти папки собрала в одну. Теперь мне нужно перенести рабочий файл на другой компьютер. Подскажите, пожалуйста как я могу это сделать не потеряв все гиперссылки, их более 3000. Могу ли я воспользоваться макросом который вы предлагаете? Буду очень признательна за помощь.
Да повыситься многократно твоя карма, уважаемый автор! Спасло!:)
Большое человеческое СПА-СИ-БО!
Ваш макрос здорово меня выручил.
и снова не работает, вот так у меня прописан макрос6
Sub ЗаменаИспорченныхГиперссылок()
On Error Resume Next
Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet
‘ part of hyperlink, which you want to change
oldString = «AppDataLocalLocalSettingsAppDataLocalLocalSettingsTemp»
‘ to what to change
newString = «Ok!»
For Each sh In ActiveWorkbook.Worksheets ‘ перебираем все листы в активной книге
For Each hl In sh.Hyperlinks ‘ перебираем все гиперссылки на листе
If hl.Address Like oldString & «*» Then
hl.Address = Replace(hl.Address, oldString, newString)
End If
Next
Next sh
End Sub
более того при попытке заменить в адресах хотя бы один символ (для проверки работоспособности)например:
‘ part of hyperlink, which you want to change
oldString = «Temp»
‘ to what to change
newString = «Ok!»
также не срабатывает.
так же при проверке оставшейся части гиперссылок обнаружит также другие неверные адреса, а если их не 1 ни 25 ни 300, возникает проблема что и самих макросов должно быть столько же сколько и адресов которые необходимо исправить.
Есть ли вообще способ задать для всех гиперссылок один путь/адрес где хранятся все файлы?
Т.к. данная проблема может и скорее всего будет возникать постоянно при каждом переносе/дополнении/корректировках базы данных.
может есть возможность выслать сам файлик, а то вдруг я мог упустить некоторые важные детали?
Попробуйте менять ЧАСТЬ пути в гиперссылках
(пути в гиперссылках могут быть сохранены не абсолютные, а относительные, — потому замена и не выполняется)
постараюсь более детально описать процесс создания файла:
вставлены именно макросы, вставлены непосредственно т.е. -> правая кнопка -> гиперссылка -> выбор файла из архива где все добро и хранится. Первые 100 ссылок проверил на работоспособность в т.ч. с переносом папки архива на домашний компьютер, убедившись в работоспособности базы данных продолжил, а после обнаружил проблему. Гиперссылки забиты не формулами а вставкой. Найти и заменить не помогло, «не обнаружено совпадений» правильность написания проверил трижды.
Возможно что в ячейках адрес как таковой не прописан, его можно увидеть только подведя курсор к ячейке с гиперссылкой и он отображается в всплывающей подсказке, именно в ней я и увидел несоответствие фактического и прописанного адресов и вот его и нужно изменить, но в строке формулы ячейки адреса не прописаны наверное поэтому «найти и заменить» не сработало.
Макрос так же не сработал. Могу предоставить скриншоту по каждым моим действиям, может ошибка именно в последовательности
А вы уверены, что у вас на листе именно гиперссылки (синие, подчеркнутые), а не формулы, например?
Нажмите Ctrl + H (диалоговое окно поиска и замены),
в поле «Что заменять» введите AppDataLocalLocalSettingsAppDataLocalLocalSettingsTemp
в поле «На что заменять» введите Ok!
и нажмите «Заменить все»
Если это поможет, — то вам нужен другой макрос (попроще, который выполняет замены в ячейках, а не в гиперссылках):
вместо
Доброго дня! Помогите советом, до сего дня макросами не пользовался и в этой области «чайник».
Проблема следующая на рабочем компьютере создаю базу данных типовых серий (вставляю гиперссылки), скидываю по почте на домашний дорабатываю (на этом этапе гиперссылки вовсе не трогаю, добавляю примечания и прочую доп.информацию. ) скидываю обратно ч/з почту, а на работе сюрприз: большинство гиперссылок не работают. При объеме базы в 3500-5000 файлов попробуйте представить тяжесть разочарования и стресса. Выяснил что адрес сменился с
D:Нормативно техническая базаТиповые материалы для проектированияТиповые серииOk!
например было D:Нормативно техническая базаТиповые материалы для проектированияТиповые серииOk!-312 в.0.djvu
стало D:Нормативно техническая базаТиповые материалы для проектированияТиповые серииAppDataLocalLocalSettingsAppDataLocalLocalSettingsTemp-312 в.0.djvu
макрос бы помог да не выходит ничего. Пожалуйста помогите разобраться, вот как я его записал
Sub ZamenaIsporchennihGiperssilok()
On Error Resume Next
Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet
‘ part of hyperlink, which you want to change
oldString = «D:Нормативно техническая базаТиповые материалы для проектированияТиповые серииAppDataLocalLocalSettingsAppDataLocalLocalSettingsTemp»
‘ to what to change
newString = «D:Нормативно техническая базаТиповые материалы для проектированияТиповые серииOk!»
For Each sh In ActiveWorkbook.Worksheets ‘ перебираем все листы в активной книге
For Each hl In sh.Hyperlinks ‘ перебираем все гиперссылки на листе
If hl.Address Like oldString & «*» Then
hl.Address = Replace(hl.Address, oldString, newString)
End If
Next
Next sh
End Sub
Однако положительных признаков работы не подал.
Ну можно «выделить» так строки — вот только нужно ли?
Если вы не знаете, зачем это «выделение» — зачем его делаете?
Это точки останова макроса. Оно вам надо, чтобы макрос останавливался на каждой строке?
Код один раз сработал — значит, проблема точно не в нём.
Ищите проблему в соответствии пути гиперссылок, и текст для замены в макросе.
И убирайте все красные точки (и не ставьте их впредь)
Скажите пожалуйста — скрипт сработал лишь раз. Затем почему то перестал работать. Я зашел в «Войти» в Макросах и там можно выделить все строчки красным (красная точка и красная линия), кроме Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet. На нее так же нельзя перетащить стрелку дебага. То есть я так понял скрипт стопорится на ней. Хотя 1 раз скрипт точно сработал. Я сохранил документ, затем его немного переместили, я изменил скрипт снова как надо (то есть места папок назначения) и он перестал работать.
Огромное спасибо! Очень помогло! Можно сказать, спасло от кары босса )))!
а по-моему гиперссылки и ссылки на файлы итак считаются одним и тем же. для них создана только одна кнопочка там в меню «изменение гиперссылки» слева
то есть
. создать ссылки на сайты.
>> В меню «Изменение Гиперссылки» слева есть возможность выбора:
это для того, чтобы можно было мышкой создать ссылку. а так, эти кнопки особой роли не играют.
можно при помощи этих кнопок создать ссылки на файлы, затем запустить скрипт по изменению ссылок, поменять например «http://ya.ru» на «helloworld.txt» и при следующем открытии меню «Изменение Гиперссылки» слева будет нажата другая кнопочка
В меню «Изменение Гиперссылки» слева есть возможность выбора:
Связать с:
— файлом, веб-страницей;
— местом в документе;
— новым документом;
— электронной почтой.
Ты не ошибся.
а по-моему все ссылки одинаковые. она становится гипер или обычной просто из-за содержимого ссылки. например если начинается на «http://. » значит гипер, а если «C:. » или «\192.168.1.1. » значит локальная или сетевая там.
как сделать чтобы менял обычные ссылки а не гипер ?
Вроде бы формат файла не изменился (xls) 97-2003, как был так и остался (не у всех, просматривающих, таблицу есть новый (xlsx))
Источник
@Qairat
frontend developer, angular 2+
Всем Привет!
Такая ситуация. Есть такой файл:
И везде на гипперссылках написано слово parsing/Licenses/Details/и свое значение.
Теперь мне надо поменять там слово parsing на другое слово.
Как можно сделать сразу везде?
Помогите.
Там более 20 тысяч строк.
-
Вопрос заданболее трёх лет назад
-
2263 просмотра
Alt+F11
Sub FixLinks()
Dim hLink As Hyperlink
Dim sOld As String
Dim sNew As String
sOld = "http://parsing"
sNew = "http://newsite"
For Each hLink In ActiveSheet.Hyperlinks
hLink.Address = Replace(hLink.Address, sOld, sNew)
Next hLink
End Sub
выполнить
Пригласить эксперта
-
Показать ещё
Загружается…
15 апр. 2023, в 14:05
80000 руб./за проект
15 апр. 2023, в 13:55
55000 руб./за проект
15 апр. 2023, в 13:45
1000 руб./за проект
Минуточку внимания
В Microsoft Excel при сортировке диапазона ячеек на листе, содержащем гиперссылки, могут возникать указанные ниже проблемы.
Некоторые гиперссылки могут быть удалены. Несмотря на то, что синий подчеркнутый текст отображается в ячейке, ничего не происходит при щелчке по ссылке.
Некоторые гиперссылки могут быть изменены таким образом, чтобы они ссылались на неверные адреса. Например, гиперссылка, которая ранее ссылалась на одну веб-страницу, теперь может ссылаться на другую веб-страницу.
Причина
Эта проблема может возникать при копировании и вставке ячеек, содержащих гиперссылки, и их последующей сортировки.
Решение
Если эта проблема возникнет, исправьте гиперссылки вручную. Это можно сделать одним из описанных ниже способов.
Если в Excel была удалена гиперссылка из ячейки, выделите ее и в меню Вставка выберите пункт Гиперссылка . Введите правильный адрес в поле адрес и нажмите кнопку ОК.Примечание. Если в Excel 2007 гиперссылка удалена из ячейки, выделите ее, а затем в группе » ссылки » на вкладке » Вставка » нажмите кнопку » Гиперссылка «. В диалоговом окне Вставка гиперссылки в поле адрес введите правильный адрес и нажмите кнопку ОК. -или-
Если гиперссылка ссылается на неверный адрес, щелкните ячейку правой кнопкой мыши и выберите команду Изменить гиперссылку. В диалоговом окне изменение гиперссылки измените адрес в поле адрес и нажмите кнопку ОК.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».
Почему слетают гиперссылки в excel
Представляем вам гостевой пост, из которого вы узнаете, как избежать самых распространённых проблем с Excel, которые мы создаём себе сами.
Читатели Лайфхакера уже знакомы с Денисом Батьяновым, который делился с нами секретами Excel. Сегодня Денис расскажет о том, как избежать самых распространённых проблем с Excel, которые мы зачастую создаём себе самостоятельно.
Сразу оговорюсь, что материал статьи предназначается для начинающих пользователей Excel. Опытные пользователи уже зажигательно станцевали на этих граблях не раз, поэтому моя задача уберечь от этого молодых и неискушённых «танцоров».
Вы не даёте заголовки столбцам таблиц
Многие инструменты Excel, например: сортировка, фильтрация, умные таблицы, сводные таблицы, — подразумевают, что ваши данные содержат заголовки столбцов. В противном случае вы либо вообще не сможете ими воспользоваться, либо они отработают не совсем корректно. Всегда заботьтесь, чтобы ваши таблицы содержали заголовки столбцов.
Пустые столбцы и строки внутри ваших таблиц
Это сбивает с толку Excel. Встретив пустую строку или столбец внутри вашей таблицы, он начинает думать, что у вас 2 таблицы, а не одна. Вам придётся постоянно его поправлять. Также не стоит скрывать ненужные вам строки/столбцы внутри таблицы, лучше удалите их.
На одном листе располагается несколько таблиц
Если это не крошечные таблицы, содержащие справочники значений, то так делать не стоит.
Вам будет неудобно полноценно работать больше чем с одной таблицей на листе. Например, если одна таблица располагается слева, а вторая справа, то фильтрация одной таблицы будет влиять и на другую. Если таблицы расположены одна под другой, то невозможно воспользоваться закреплением областей, а также одну из таблиц придётся постоянно искать и производить лишние манипуляции, чтобы встать на неё табличным курсором. Оно вам надо?
Данные одного типа искусственно располагаются в разных столбцах
Очень часто пользователи, которые знают Excel достаточно поверхностно, отдают предпочтение такому формату таблицы:
Казалось бы, перед нами безобидный формат для накопления информации по продажам агентов и их штрафах. Подобная компоновка таблицы хорошо воспринимается человеком визуально, так как она компактна. Однако, поверьте, что это сущий кошмар — пытаться извлекать из таких таблиц данные и получать промежуточные итоги (агрегировать информацию).
Дело в том, что данный формат содержит 2 измерения: чтобы найти что-то в таблице, вы должны определиться со строкой, перебирая филиал, группу и агента. Когда вы найдёте нужную стоку, то потом придётся искать уже нужный столбец, так как их тут много. И эта «двухмерность» сильно усложняет работу с такой таблицей и для стандартных инструментов Excel — формул и сводных таблиц.
Если вы построите сводную таблицу, то обнаружите, что нет возможности легко получить данные по году или кварталу, так как показатели разнесены по разным полям. У вас нет одного поля по объёму продаж, которым можно удобно манипулировать, а есть 12 отдельных полей. Придётся создавать руками отдельные вычисляемые поля для кварталов и года, хотя, будь это всё в одном столбце, сводная таблица сделала бы это за вас.
Если вы захотите применить стандартные формулы суммирования типа СУММЕСЛИ (SUMIF), СУММЕСЛИМН (SUMIFS), СУММПРОИЗВ (SUMPRODUCT), то также обнаружите, что они не смогут эффективно работать с такой компоновкой таблицы.
Рекомендуемый формат таблицы выглядит так:
Разнесение информации по разным листам книги «для удобства»
Ещё одна распространенная ошибка — это, имея какой-то стандартный формат таблицы и нуждаясь в аналитике на основе этих данных, разносить её по отдельным листам книги Excel. Например, часто создают отдельные листы на каждый месяц или год. В результате объём работы по анализу данных фактически умножается на число созданных листов. Не надо так делать. Накапливайте информацию на ОДНОМ листе.
Информация в комментариях
Часто пользователи добавляют важную информацию, которая может им понадобиться, в комментарий к ячейке. Имейте в виду, то, что находится в комментариях, вы можете только посмотреть (если найдёте). Вытащить это в ячейку затруднительно. Рекомендую лучше выделить отдельный столбец для комментариев.
Бардак с форматированием
Определённо не добавит вашей таблице ничего хорошего. Это выглядит отталкивающе для людей, которые пользуются вашими таблицами. В лучшем случае этому не придадут значения, в худшем — подумают, что вы не организованы и неряшливы в делах. Стремитесь к следующему:
- Каждая таблица должна иметь однородное форматирование. Пользуйтесь форматированием умных таблиц. Для сброса старого форматирования используйте стиль ячеек «Обычный».
- Не выделяйте цветом строку или столбец целиком. Выделите стилем конкретную ячейку или диапазон. Предусмотрите «легенду» вашего выделения. Если вы выделяете ячейки, чтобы в дальнейшем произвести с ними какие-то операции, то цвет не лучшее решение. Хоть сортировка по цвету и появилась в Excel 2007, а в 2010-м — фильтрация по цвету, но наличие отдельного столбца с чётким значением для последующей фильтрации/сортировки всё равно предпочтительнее. Цвет — вещь небезусловная. В сводную таблицу, например, вы его не затащите.
- Заведите привычку добавлять в ваши таблицы автоматические фильтры (Ctrl+Shift+L), закрепление областей. Таблицу желательно сортировать. Лично меня всегда приводило в бешенство, когда я получал каждую неделю от человека, ответственного за проект, таблицу, где не было фильтров и закрепления областей. Помните, что подобные «мелочи» запоминаются очень надолго.
Объединение ячеек
Используйте объединение ячеек только тогда, когда без него никак. Объединенные ячейки сильно затрудняют манипулирование диапазонами, в которые они входят. Возникают проблемы при перемещении ячеек, при вставке ячеек и т.д.
Объединение текста и чисел в одной ячейке
Тягостное впечатление производит ячейка, содержащая число, дополненное сзади текстовой константой « РУБ.» или » USD», введенной вручную. Особенно, если это не печатная форма, а обычная таблица. Арифметические операции с такими ячейками естественно невозможны.
Числа в виде текста в ячейке
Избегайте хранить числовые данные в ячейке в формате текста. Со временем часть ячеек в таком столбце у вас будут иметь текстовый формат, а часть в обычном. Из-за этого будут проблемы с формулами.
Если ваша таблица будет презентоваться через LCD проектор
Выбирайте максимально контрастные комбинации цвета и фона. Хорошо выглядит на проекторе тёмный фон и светлые буквы. Самое ужасное впечатление производит красный на чёрном и наоборот. Это сочетание крайне неконтрастно выглядит на проекторе — избегайте его.
Страничный режим листа в Excel
Это тот самый режим, при котором Excel показывает, как лист будет разбит на страницы при печати. Границы страниц выделяются голубым цветом. Не рекомендую постоянно работать в этом режиме, что многие делают, так как в процессе вывода данных на экран участвует драйвер принтера, а это в зависимости от многих причин (например, принтер сетевой и в данный момент недоступен) чревато подвисаниями процесса визуализации и пересчёта формул. Работайте в обычном режиме.
Ещё больше полезной информации про Excel можно узнать на сайте Дениса.
Макрос для исправление повреждённых гиперссылок во всей книге:
Если нужно заменить несколько вариантов неверных ссылок, код будет таким:
Расширенная версия этого макроса учитывает, что слеш в ссылках может быть как прямым, так и обратным, а также выводит информацию о количестве произведённых замен, и список ссылок из файла, которые не были обработаны (к которым замены не были применены)
- 44341 просмотр
Комментарии
Спасибо ОГРОМНОЕ . Помогло, заменил 267 гиперссылок.
Спасибо автору! Макрос помог!
Благодарю тебя за то что ты есть, и написал такой прекрасный макрос.
Ты спас годовую работу трех человек.
Поcле выполнения макроса, ссылки не меняются и выпадает сообщение: Заменено гиперссылок 0. Также в файле найдены ссылки на: и перечисляются гиперссылки.
Сработал расширенный макрос,
более 5000 адресов исправлены на коректные
Огромная благодарность
Дай Бог тебе здоровья автор
Добрый день! Прогнал расширенную версию макроса, он отработал, но не все. после нажатия на ошибочную гиперссылку и дальнейшим запуском макроса он ее отрабатывает, а остальные просто выводит в протокол что они есть.
Я спасён!
Огромное спасибо за помощь! Помогли сэкономить огромный вал рабочего времени!
Огромно спасибо. Автоматически исправил более 5 тысяч ссылок в архиве. Все работает. Ну просто нет слов, как я Вам признателен.
СПАСИБО ОГРОМНОЕ ЗА ВАШ РЕСУРС И ДОБРОТУ.
Правда, Ваш макрос у меня не работает почему-то, цель сделать из абсолютных ссылок относительные.но выяснилось, что вполне работает обычное «найти и заменить»
в строку «найти» пишем кусок пути ДО нужной папки, а в «заменить» оставляем пустоту, ставим галку «во всей книге» и жмем «заменить все»
пс, на всяк случай
изначальный вид ссылки был C:UsersSVETLANADesktopКрит дефектовка – копияВилла114.11.2016 16-38-43_PB148421.JPG
файл excel лежит в папке Вилла1
В найти и заменить меняю C:UsersSVETLANADesktopКрит дефектовка – копия на пусто
На другом компьютере ссылки работают корректно
Слетели все ссылки после вставки автосохраненного файла. Почему то данный макрос не работает
Sub ZamenaIsporchennihGiperssilok()
On Error Resume Next
Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet
‘ part of hyperlink, which you want to change
oldString = «C:UsersDianaGAAppDataRoamingMicrosoftExcel»
‘ to what to change
newString = «C:UsersDianaGADekstopÀÁÌ – 2015»
For Each sh In ActiveWorkbook.Worksheets ‘ ïåðåáèðàåì âñå ëèñòû â àêòèâíîé êíèãå
For Each hl In sh.Hyperlinks ‘ ïåðåáèðàåì âñå ãèïåðññûëêè íà ëèñòå
If hl.Address Like «*» & oldString & «*» Then
hl.Address = Replace(hl.Address, oldString, newString)
End If
Next
Next sh
End Sub
Никаких действий не происходит
Тут ничего особенного делать не надо, – Excel сам все гиперссылки в книге подправит, как только вы лист переименуете.
Добрый вечер всем! Выручайте! Как изменить имя листа книги в Excel при этом не потеряв гиперссылки? Заранее благодарю!
Спасибо тебе, добрый человек!
Благодарность не знает границ! Спасибо очень выручили!)))
Автор, огромное вам СПАСИБО. Очень выручили
Доброго дня! Подскажите, пожалуйста, код макроса, который бы в выделенном диапазоне ячеек (каждая из которых ссылается в относительном режиме на какую-то ячейку этого же листа) заменил все относительные ссылки на абсолютные.
vitamax555, а какое отношение ваш вопрос имеет к теме статьи, – замене гиперссылок?
На вопросы «не в тему» не отвечаю
Доброго дня! Подскажите, пожалуйста, у меня есть экселевский файл и в нем прописан код VBA. Вроде бы работал правильно, но мне нужно было изменить данные, так как не правильно тянул часть данных из исходника. Как только изменил данные и исходник, данные стали грузиться правильно, однако очень долго. Так раньше на это требовалось около 1 минуты, теперь это занимает 10. Что мне делатать. Подскажите, пожалуйста! Спасибо!
Почему то макрос меняет гиперссылку только в одной ячейке, следующую не трогает. Приходится запускать столько раз, сколько ячеек. Как будто цикл не срабатывает.
Здравствуйте, Юрий
Достаточно убрать цикл по листам,
применяя изменения только к активному листу:
Спасибо! Очень выручила данная статья!
Но как всегда возник вопрос – как изменить данный макрос, что бы изменения коснулись только ОДНОГО листа в книге? (Файлов больших несколько, листов в каждом масса, соответственно разбирать файл по листам а потом собирать его обратно – очень долгий и не совсем желаемый процесс. )
Заранее СПАСИБО.
целую твои умелые ручки, автор!
Вот в этом и проблема, когда я папку с (эксель и файлами) перемещаю на другой комп у меня остается адрес гиперссылки моего компа (где находилась папка изначально)
Здравствуйте, Владимир
Так не получится, – Excel (тем более, если он не запущен) не отслеживает перемещение файлов и папок.
Да и как Excel узнает, где искать перемещенные файлы. мало ли куда вы их перенесете, вдруг вообще на другой комп.
Надо делать гиперссылки относительными (чтобы путь прописывался относительно файла Excel)?
а папку с файлами держать в той же папке. где сохранён файл Excel, и не переименовывать.
Тогда,если переносите на другой комп файл Excel вместе с папкой, гиперссылки вроде должны сохранять работоспособность.
подскажите, проблема такая, в экселе перестали работать гиперссылка, я взял макрос поменял часть гиперссылки и он начал работать, но когда папку (с файлами и экселем) отправляю, или перемещаю на другой жесткий диск они перестают работать, приходится опять переделывать через макрос гиперссылку.
вопрос можно ли сделать так что бы при переносе папки на другой диск, все менялась автоматически? (когда делаешь в новом экселе гиперссылку и переносишь всю папку куда либо все меняется автоматом)
Здравствуйте, Татьяна.
Так вы перенесите файлы на другой комп в ту же папку (чтобы путь к папке не изменился), – и тогда ничего переделывать не придётся.
А если путь к папке изменится, – тогда макрос этот поможет.
Как запустить макрос – объяснять не буду (об этом в интернете много написано, в т.ч. есть видеоинструкции)
В макросе надо будет только задать, что на что менять (в коде указать старый путь к папке, и новый)
Попробуйте, – всё очень просто.
PS: Чтобы вставить макрос в файл, надо нажать сначала Alt + F11, потом Ctrl + R, потом Enter, – и в появившееся большое текстовое поле скопировать код из статьи.
Здравствуйте!
Я в вопросе макросов вообще новичок, вернее никогда с ними не работала, поэтому прошу помощи в следующем вопросе. Я создала файл в EXELе со множеством гиперссылок на разные файлы, эти файлы во многих папках, но эти папки собрала в одну. Теперь мне нужно перенести рабочий файл на другой компьютер. Подскажите, пожалуйста как я могу это сделать не потеряв все гиперссылки, их более 3000. Могу ли я воспользоваться макросом который вы предлагаете? Буду очень признательна за помощь.
Да повыситься многократно твоя карма, уважаемый автор! Спасло!:)
Большое человеческое СПА-СИ-БО!
Ваш макрос здорово меня выручил.
и снова не работает, вот так у меня прописан макрос6
Sub ЗаменаИспорченныхГиперссылок()
On Error Resume Next
Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet
‘ part of hyperlink, which you want to change
oldString = «AppDataLocalLocalSettingsAppDataLocalLocalSettingsTemp»
‘ to what to change
newString = «Ok!»
For Each sh In ActiveWorkbook.Worksheets ‘ перебираем все листы в активной книге
For Each hl In sh.Hyperlinks ‘ перебираем все гиперссылки на листе
If hl.Address Like oldString & «*» Then
hl.Address = Replace(hl.Address, oldString, newString)
End If
Next
Next sh
End Sub
более того при попытке заменить в адресах хотя бы один символ (для проверки работоспособности)например:
‘ part of hyperlink, which you want to change
oldString = «Temp»
‘ to what to change
newString = «Ok!»
также не срабатывает.
так же при проверке оставшейся части гиперссылок обнаружит также другие неверные адреса, а если их не 1 ни 25 ни 300, возникает проблема что и самих макросов должно быть столько же сколько и адресов которые необходимо исправить.
Есть ли вообще способ задать для всех гиперссылок один путь/адрес где хранятся все файлы?
Т.к. данная проблема может и скорее всего будет возникать постоянно при каждом переносе/дополнении/корректировках базы данных.
может есть возможность выслать сам файлик, а то вдруг я мог упустить некоторые важные детали?
Попробуйте менять ЧАСТЬ пути в гиперссылках
(пути в гиперссылках могут быть сохранены не абсолютные, а относительные, – потому замена и не выполняется)
постараюсь более детально описать процесс создания файла:
вставлены именно макросы, вставлены непосредственно т.е. -> правая кнопка -> гиперссылка -> выбор файла из архива где все добро и хранится. Первые 100 ссылок проверил на работоспособность в т.ч. с переносом папки архива на домашний компьютер, убедившись в работоспособности базы данных продолжил, а после обнаружил проблему. Гиперссылки забиты не формулами а вставкой. Найти и заменить не помогло, «не обнаружено совпадений» правильность написания проверил трижды.
Возможно что в ячейках адрес как таковой не прописан, его можно увидеть только подведя курсор к ячейке с гиперссылкой и он отображается в всплывающей подсказке, именно в ней я и увидел несоответствие фактического и прописанного адресов и вот его и нужно изменить, но в строке формулы ячейки адреса не прописаны наверное поэтому «найти и заменить» не сработало.
Макрос так же не сработал. Могу предоставить скриншоту по каждым моим действиям, может ошибка именно в последовательности
А вы уверены, что у вас на листе именно гиперссылки (синие, подчеркнутые), а не формулы, например?
Нажмите Ctrl + H (диалоговое окно поиска и замены),
в поле «Что заменять» введите AppDataLocalLocalSettingsAppDataLocalLocalSettingsTemp
в поле «На что заменять» введите Ok!
и нажмите «Заменить все»
Если это поможет, – то вам нужен другой макрос (попроще, который выполняет замены в ячейках, а не в гиперссылках):
вместо
Доброго дня! Помогите советом, до сего дня макросами не пользовался и в этой области «чайник».
Проблема следующая на рабочем компьютере создаю базу данных типовых серий (вставляю гиперссылки), скидываю по почте на домашний дорабатываю (на этом этапе гиперссылки вовсе не трогаю, добавляю примечания и прочую доп.информацию. ) скидываю обратно ч/з почту, а на работе сюрприз: большинство гиперссылок не работают. При объеме базы в 3500-5000 файлов попробуйте представить тяжесть разочарования и стресса. Выяснил что адрес сменился с
D:Нормативно техническая базаТиповые материалы для проектированияТиповые серииOk!
например было D:Нормативно техническая базаТиповые материалы для проектированияТиповые серииOk!