Excel гиперссылки изменились на локальный путь вместо сетевого

Обновлено: 07.07.2024

Расширенная версия этого макроса учитывает, что слеш в ссылках может быть как прямым, так и обратным, а также выводит информацию о количестве произведённых замен, и список ссылок из файла, которые не были обработаны (к которым замены не были применены)

Комментарии

Елена, это уже совсем другой макрос нужен.
Можем сделать под заказ. От 1500 руб.

Скажите, пожалуйста, как сделать, чтобы макрос по введенной уже гиперссылке проверял наличие объекта сначала по указанному адресу (1) и если оттуда объект уже перенесен, адрес менялся на другой (2). Гиперссылка создается на папки объектов на удаленном сервере, а со временем они переносятся в другую папку- архив. Надеюсь понятно написала.

Не знаю что даже сказать. Магия сработала. Спасибо разработчик большое! Здоровья тебе и твоим близким.

Спасибо Дружище. Желаю тебе всего хорошего, чего сам себе желаешь.

Отличный макрос! Спасибо!

Автор, спасибо огромное!

Спасибо ОГРОМНОЕ . Помогло, заменил 267 гиперссылок.

Спасибо автору! Макрос помог!

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

Сработал расширенный макрос,
более 5000 адресов исправлены на коректные
Огромная благодарность
Дай Бог тебе здоровья автор

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

Я спасён!
Огромное спасибо за помощь! Помогли сэкономить огромный вал рабочего времени!

Огромно спасибо. Автоматически исправил более 5 тысяч ссылок в архиве. Все работает. Ну просто нет слов, как я Вам признателен.

СПАСИБО ОГРОМНОЕ ЗА ВАШ РЕСУРС И ДОБРОТУ.
Правда, Ваш макрос у меня не работает почему-то, цель сделать из абсолютных ссылок относительные.но выяснилось, что вполне работает обычное "найти и заменить"
в строку "найти" пишем кусок пути ДО нужной папки, а в "заменить" оставляем пустоту, ставим галку "во всей книге" и жмем "заменить все"

Слетели все ссылки после вставки автосохраненного файла. Почему то данный макрос не работает
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:\Users\DianaGA\AppData\Roaming\Microsoft\Excel"
' to what to change
newString = "C:\Users\DianaGA\Dekstop\ÀÁÌ - 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 = "AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp\"
' 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!\"

Попробуйте менять ЧАСТЬ пути в гиперссылках
(пути в гиперссылках могут быть сохранены не абсолютные, а относительные, - потому замена и не выполняется)

постараюсь более детально описать процесс создания файла:
вставлены именно макросы, вставлены непосредственно т.е. -> правая кнопка -> гиперссылка -> выбор файла из архива где все добро и хранится. Первые 100 ссылок проверил на работоспособность в т.ч. с переносом папки архива на домашний компьютер, убедившись в работоспособности базы данных продолжил, а после обнаружил проблему. Гиперссылки забиты не формулами а вставкой. Найти и заменить не помогло, "не обнаружено совпадений" правильность написания проверил трижды.
Возможно что в ячейках адрес как таковой не прописан, его можно увидеть только подведя курсор к ячейке с гиперссылкой и он отображается в всплывающей подсказке, именно в ней я и увидел несоответствие фактического и прописанного адресов и вот его и нужно изменить, но в строке формулы ячейки адреса не прописаны наверное поэтому "найти и заменить" не сработало.
Макрос так же не сработал. Могу предоставить скриншоту по каждым моим действиям, может ошибка именно в последовательности

А вы уверены, что у вас на листе именно гиперссылки (синие, подчеркнутые), а не формулы, например?

Нажмите Ctrl + H (диалоговое окно поиска и замены),
в поле «Что заменять» введите AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp
в поле «На что заменять» введите Ok!
и нажмите «Заменить все»

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

Доброго дня! Помогите советом, до сего дня макросами не пользовался и в этой области "чайник".
Проблема следующая на рабочем компьютере создаю базу данных типовых серий (вставляю гиперссылки), скидываю по почте на домашний дорабатываю (на этом этапе гиперссылки вовсе не трогаю, добавляю примечания и прочую доп.информацию. ) скидываю обратно ч/з почту, а на работе сюрприз: большинство гиперссылок не работают. При объеме базы в 3500-5000 файлов попробуйте представить тяжесть разочарования и стресса. Выяснил что адрес сменился с
D:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\Ok!\
например было D:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\Ok!\0-312 в.0.djvu
стало D:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp\0-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:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp\"
' 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))

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

Существуют ситуации, когда на листе есть много гиперссылок(если еще на знакомы с гиперссылками - Что такое гиперссылка?) на различные папки или интернет ресурсы. И иногда случаются ситуации когда адреса этих гиперссылок надо поменять. Как правило это происходит если либо домен сменился, либо на сервере добавилась директория и эти изменения надо отразить в гиперссылках, либо все просто было перемещено в другую папку. Для примера возьмем такие исходные данные: надо заменить текст ссылки .excel_vba на текст excel-vba .
Прежде чем начать замену необходимо еще определить каким способом установлена гиперссылка. Если установлена через формулу ГИПЕРССЫЛКА, то все просто:

  1. выделяем диапазон с гиперссылками;
  2. жмем Ctrl+H.
    • Найти: .excel_vba
    • Заменить на: excel-vba
    • Жмем кнопочку "Параметры" и устанавливаем Область поиска - Формулы и снимаем галочку "Ячейка целиком"
  3. Жмем "Заменить все"

Теперь адреса ссылок должны поменяться.
Все гораздо сложнее, если гиперссылки были созданы через стандартное меню: правый клик мыши на ячейке - Гиперссылка. Тут фокус с заменой через 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 (или создаем кнопку для вызова макроса на листе)
  • в первом диалоговом окне указываем в каком диапазоне надо найти гиперссылки и заменить в них адрес
  • во втором диалоговом окне указываем какой текст заменить
  • в третьем диалоговом окне указываем на что заменить указанный в первом окне текст

Примерно так же можно заменить гиперссылки в объектах на листе(например, картинках и кнопках):

Данные код работает почти так же как и предыдущий:

  • создаем стандартный модуль и помещаем в него код макроса выше
  • жмем Alt+F11 и выбираем макрос Replace_Hyperlink_inShape (или создаем кнопку для вызова макроса на листе)
  • в первом диалоговом окне указываем какой текст заменить
  • во втором диалоговом окне на что заменить указанный в первом окне текст

Гиперссылки всех объектов на листе будут изменены. Если у объекта нет гиперссылки - объект будет пропущен.

Чтобы заменить гиперссылки только в выделенных объектах необходимо строку
For Each oSh In ActiveSheet.Shapes
заменить на такую:
For Each oSh In Selection.ShapeRange
тогда надо будет выделить объекты на листе, для которых необходимо заменить гиперссылки, и запустить макрос.

Пример замены гиперссылок.xls (58,0 KiB, 9 646 скачиваний)

Адрес — адрес страницы в сети интернет или путь к файлу на диске. Адрес может указывать на определенное место в Книге, например на ячейку или именованный диапазон. Путь может представлять собой путь к файлу на жестком диске, либо URL-адрес в Интернете или интрасети. Аргумент Адрес записывается в виде текстовой строки, заключенной в кавычки, или представляет собой ссылку на ячейку, содержащую гиперссылку или путь в виде текстовой строки (без кавычек).

Открываем файл на диске

С помощью функции ГИПЕРССЫЛКА () можно открыть файл, сохраненный на диске компьютера или сервера. Откроем стандартный файл Windows для редактирования текста Notepad.exe

Если на компьютере имеется диск D: на котором в папке Finance имеется файл БазаДанных.xlsx , то открыть его поможет формула

После этого, в окне файла БазаДанных.xlsx , станет активной ячейка A5 .

Переходим на другой лист в текущей книге

Предположим, что требуется сделать ссылку с Листа1 на Лист2 в книге БазаДанных.xlsx .

Поместим формулу с функцией ГИПЕРССЫЛКА() в ячейке А18 на Листе1 (см. файл примера ).

Плохой новостью является то, что если у Вас открыто 2 или более файлов EXCEL (в одном экземпляре программы, см. примечание ниже), то функция ЯЧЕЙКА() может вернуть имя другого открытого файла (если Вы его изменяли). Так что будьте осторожнее с функцией ЯЧЕЙКА() . Поэтому иногда удобнее ссылки внутри книги создавать с помощью стандартного механизма гиперссылок, нажав CTRL+K или через меню Вставка/ Связи/ Гиперссылка (после вызова окна Вставка гиперссылки выберите Связать с: местом в документе ).

Абсолютные и относительные гиперссылки в Excel

В Excel существует два типа гиперссылок: абсолютные и относительные.

Абсолютные гиперссылки

Абсолютные гиперссылки содержат в себе полный интернет адрес или полный путь на компьютере. Например:

Относительные гиперссылки

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

Я рекомендую всегда использовать абсолютные ссылки, так как при переходе по относительным ссылкам в Excel файле, открытом на другом компьютере возможны ошибки.

Как редактировать гиперссылку в Excel

Для редактирования уже созданной гиперссылки, кликните по ячейке со ссылкой правой клавишей мыши и в выпадающем меню выберите “Edit Hyperlink”.

В диалоговом окне внесите корректировки в ссылку.

Как отформатировать гиперссылку в Excel

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

  • Перейдите на вкладку панели инструментов “Главная”, затем в раздел “Стили ячеек”:


  • Кликните на “Гиперссылка” правой кнопкой мыши и выберите пункт “Изменить” для редактирования формата ссылки:


  • Кликните на “Открывавшаяся гиперссылка” правой кнопкой мы и выберите пункт “Изменить” для редактирования формата ссылки;
  • В диалоговом окне “Стили” нажмите кнопку “Формат”:


  • в диалоговом окне “Format Cells” перейдите на вкладки “Шрифт” и/или “Заливка” для настройки формата ссылок:


Как удалить гиперссылку в Excel

Удаление гиперссылки осуществляется в два клика:

  • Нажмите правой клавишей мыши на ячейки со ссылкой;
  • В выпадающем меню выберите пункт “Удалить гиперссылку”.


Примеры использования функции ГИПЕРССЫЛКА в Excel

Как создать гиперссылку на файл в Excel? Пример 1. Бухгалтер предприятия выполняет различные расчеты и хранит таблицы данных в Excel в одной книге (Бухгалтерия.xlsx), содержащей множество листов. Для удобства было решено создать отдельный лист с оглавлением в виде гиперссылок на каждый из имеющихся листов.

На новом листе создадим следующую таблицу:


Для создания гиперссылки используем формулу:


Описание аргументов функции:

Аналогично создадим гиперссылки для остальных страниц. В результате получим:


Динамическая гиперссылка в Excel

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


В результате получим:


Примечание: указанная веб-страница будет открыта в браузере, используемом в системе по умолчанию.

Виды гиперссылок

Если добавлять гиперссылку первым способом (напрямую в ячейку), то пользователь будет работать с диалоговым окном «Добавление гиперссылки», в котором предлагается 4 способа связи:

  1. Файл, веб-страница (здесь указывается путь к файлу или адрес сайта).
  2. Место в документе (лист или ячейка).
  3. Новый документ (путь к новому документу).
  4. Электронная почта (здесь указывается адрес получателя, который будет отображен при открытии Microsoft Outlook).


Существующие типы гиперссылок

Если вдруг нужно будет изменить или удалить существующую гиперссылку, достаточно щелкнуть на ней правой кнопкой мыши и выбрать соответствующий пункт («изменить» или «удалить гиперссылку»).

Такими довольно простыми способами можно создать гиперссылку в Excel. Наиболее простым и практичным способом является первый — через ячейку. Дело в том, что именно здесь собраны все варианты: можно создать ссылку на любое поле в документе, можно указать путь к файлу, адрес сайта и т.д. Хотя использовать можно любой из этих способов — как удобнее.

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

В рассмотренных выше примерах мы рассматривали ссылки только в рамках одного листа. Теперь давайте разберемся, как создать линки на другие листы.

В целом, алгоритм аналогичен тому, что мы уже описали выше для операций, выполняемых на одном и том же листе. Однако, теперь нужно, помимо адреса самой ячейки (или диапазона ячеек), указать еще и адрес конкретного листа. Для этого после знака “=” прописываем его название, затем ставим восклицательный знак (“!”), после чего уже указываем адрес требуемого элемента.

Например, ссылка на ячейку C5, расположенную на Листе 2, имеет следующий вид: =Лист2!C5 .


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

  1. Переходим в нужную ячейку, пишем знак “=”, далее кликаем по названию требуемого листа внизу окна программы.
  2. Мы окажемся на втором листе, где также кликом мыши выбираем ячейку, которую хотим добавить в наше выражение.
  3. Жмем клавишу Enter, что вернет нас на первоначальный лист с уже готовым результатом.

Внешняя ссылка на другую книгу

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

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

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

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

Итак, допустим, нам нужно создать ссылку на ячейку B5, которая находится на листе в открытой книге “Ссылки.xlsx”. В этом случае нам нужно прописать выражение, имеющее вид: =[Ссылки.xlsx]Лист3!B5 .


Ссылка же на закрытый файл выглядит несколько иначе: ='С:Папка1[Ссылки.xlsx]Лист3'!B5 .

Здесь также можно вместо прописывания адресов вручную, переключаться к нужным элементам и добавлять их в выражение путем клика по ним левой кнопкой мыши.

  1. Переходим в ячейку, куда планируем добавить выражение. Ставим знак “=”.
  2. Переключаемся в открытую книгу, в которой находится ячейка, на которую мы хотим сослаться. Щелкаем по нужному листу и далее – по требуемой ячейке.
  3. После того, как мы нажмем Enter, мы вернемся к первоначальной книге с готовым результатом по заданному выражению.
  4. В случае ненадобности, книгу, на которую мы сослались, можно закрыть. Ссылка изменит свой вид, и в нее добавится путь к документу. Соответственно, в тех случаях, когда функция, формула или иной инструмент способны работать с закрытыми документами, такая автозамена линка окажется крайне полезной.

Таким образом, как вы могли заметить, вместо ручного прописывания адресов куда проще создавать ссылки с помощью кликов левой кнопкой мыши по нужным элементами, причем совсем неважно, где они находятся – на том же листе, в этом же документе или в другой книге. И даже если после того, как мы создали внешний линк на другой документ и потом закрыли его, программа автоматически видоизменит ссылку, сохранив в ней полный путь к файлу.

Добавление гиперссылок

Прежде всего, рассмотрим способы добавления гиперссылок в документ.

вставка безанкорных гиперссылок

Проще всего вставить безанкорную ссылку на веб-страницу или адрес электронной почты. Безанкорная гиперссылка – эта такая ссылка, адрес которой прямо прописывается в ячейке и виден на листе без дополнительных манипуляций. Особенностью программы Excel является то, что любая безанкорная ссылка, вписанная в ячейку, превращается в гиперссылку.

Вписываем ссылку в любую область листа.


Теперь при клике на данную ячейку запустится браузер, который установлен по умолчанию, и перейдет по указанному адресу.

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


связь с местом в документе

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

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



Вместо этого в нижнем поле можно также выбрать лист данного документа, куда будет совершаться переход при клике на ячейку. После того, как выбор сделан, следует нажать на кнопку «OK».


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

связь с электронной почтой

Ячейку при помощи ссылки можно связать даже с электронной почтой.

  1. В окне «Вставка гиперссылки» кликаем по кнопке «Связать с электронной почтой».
  2. В поле «Адрес электронной почты» вписываем e-mail, с которым хотим связать ячейку. В поле «Тема» можно написать тему письма. После того, как настройки выполнены, жмем на кнопку «OK».


вставка гиперссылки через кнопку на ленте

Гиперссылку также можно вставить через специальную кнопку на ленте.

    Переходим во вкладку «Вставка». Жмем на кнопку «Гиперссылка», расположенную на ленте в блоке инструментов «Ссылки».



Как отключить автоматическое создание гиперссылок в Excel

  • В Excel 2007 нажмите кнопку Office, затем Excel Options (Параметры Excel). Если у Вас Excel 2010 или 2013, то перейдите на вкладку File (Файл), затем – Options (Параметры).
  • В диалоговом окне Excel Options (Параметры Excel) перейдите на вкладку Proofing (Правописание) и щелкните по кнопке AutoCorrect Options (Параметры автозамены).
  • В диалоговом окне AutoCorrect (Автозамена) откройте вкладку AutoFormat As You Type (Автоформат при вводе) и снимите галочку с пункта Internet and network paths with hyperlinks (Адреса интернета и сетевые пути гиперссылками).
  • Дважды щелкните ОК, чтобы закрыть оба диалоговых окна и вернуться на рабочий лист Excel.

Теперь можете вводить URL или адрес электронной почты в любой ячейке – Excel будет сохранять их в текстовом формате.

Если же вам действительно понадобится создать гиперссылку, просто нажмите комбинацию Ctrl+K и тут же откроется диалоговое окно Insert Hyperlink (Вставка гиперссылки).

Заключение

Таким образом, в Эксель используются два вида ссылок в зависимости от назначения. Одни используются в формулах и функциях, с помощью других (гиперссылки) осуществляется переход к нужным объектам в виде других документов, веб-страниц или e-mail. В зависимости от выбранного типа ссылки меняется алгоритм действий по созданию нужного линка.

Расширенная версия этого макроса учитывает, что слеш в ссылках может быть как прямым, так и обратным, а также выводит информацию о количестве произведённых замен, и список ссылок из файла, которые не были обработаны (к которым замены не были применены)

Комментарии

Елена, это уже совсем другой макрос нужен.
Можем сделать под заказ. От 1500 руб.

Скажите, пожалуйста, как сделать, чтобы макрос по введенной уже гиперссылке проверял наличие объекта сначала по указанному адресу (1) и если оттуда объект уже перенесен, адрес менялся на другой (2). Гиперссылка создается на папки объектов на удаленном сервере, а со временем они переносятся в другую папку- архив. Надеюсь понятно написала.

Не знаю что даже сказать. Магия сработала. Спасибо разработчик большое! Здоровья тебе и твоим близким.

Спасибо Дружище. Желаю тебе всего хорошего, чего сам себе желаешь.

Отличный макрос! Спасибо!

Автор, спасибо огромное!

Спасибо ОГРОМНОЕ . Помогло, заменил 267 гиперссылок.

Спасибо автору! Макрос помог!

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

Сработал расширенный макрос,
более 5000 адресов исправлены на коректные
Огромная благодарность
Дай Бог тебе здоровья автор

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

Я спасён!
Огромное спасибо за помощь! Помогли сэкономить огромный вал рабочего времени!

Огромно спасибо. Автоматически исправил более 5 тысяч ссылок в архиве. Все работает. Ну просто нет слов, как я Вам признателен.

СПАСИБО ОГРОМНОЕ ЗА ВАШ РЕСУРС И ДОБРОТУ.
Правда, Ваш макрос у меня не работает почему-то, цель сделать из абсолютных ссылок относительные.но выяснилось, что вполне работает обычное "найти и заменить"
в строку "найти" пишем кусок пути ДО нужной папки, а в "заменить" оставляем пустоту, ставим галку "во всей книге" и жмем "заменить все"

Слетели все ссылки после вставки автосохраненного файла. Почему то данный макрос не работает
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:\Users\DianaGA\AppData\Roaming\Microsoft\Excel"
' to what to change
newString = "C:\Users\DianaGA\Dekstop\ÀÁÌ - 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 = "AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp\"
' 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!\"

Попробуйте менять ЧАСТЬ пути в гиперссылках
(пути в гиперссылках могут быть сохранены не абсолютные, а относительные, - потому замена и не выполняется)

постараюсь более детально описать процесс создания файла:
вставлены именно макросы, вставлены непосредственно т.е. -> правая кнопка -> гиперссылка -> выбор файла из архива где все добро и хранится. Первые 100 ссылок проверил на работоспособность в т.ч. с переносом папки архива на домашний компьютер, убедившись в работоспособности базы данных продолжил, а после обнаружил проблему. Гиперссылки забиты не формулами а вставкой. Найти и заменить не помогло, "не обнаружено совпадений" правильность написания проверил трижды.
Возможно что в ячейках адрес как таковой не прописан, его можно увидеть только подведя курсор к ячейке с гиперссылкой и он отображается в всплывающей подсказке, именно в ней я и увидел несоответствие фактического и прописанного адресов и вот его и нужно изменить, но в строке формулы ячейки адреса не прописаны наверное поэтому "найти и заменить" не сработало.
Макрос так же не сработал. Могу предоставить скриншоту по каждым моим действиям, может ошибка именно в последовательности

А вы уверены, что у вас на листе именно гиперссылки (синие, подчеркнутые), а не формулы, например?

Нажмите Ctrl + H (диалоговое окно поиска и замены),
в поле «Что заменять» введите AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp
в поле «На что заменять» введите Ok!
и нажмите «Заменить все»

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

Доброго дня! Помогите советом, до сего дня макросами не пользовался и в этой области "чайник".
Проблема следующая на рабочем компьютере создаю базу данных типовых серий (вставляю гиперссылки), скидываю по почте на домашний дорабатываю (на этом этапе гиперссылки вовсе не трогаю, добавляю примечания и прочую доп.информацию. ) скидываю обратно ч/з почту, а на работе сюрприз: большинство гиперссылок не работают. При объеме базы в 3500-5000 файлов попробуйте представить тяжесть разочарования и стресса. Выяснил что адрес сменился с
D:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\Ok!\
например было D:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\Ok!\0-312 в.0.djvu
стало D:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp\0-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:\Нормативно техническая база\Типовые материалы для проектирования\Типовые серии\AppData\Local\LocalSettings\AppData\Local\LocalSettings\Temp\"
' 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))

Читайте также: