Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2014, 15:48   #1
Kazakoff88
 
Регистрация: 19.06.2014
Сообщений: 8
По умолчанию массовое изменение адресов гиперссылок в книге

Доброе время суток!
У меня такая проблема:
Есть два файла, один основной(1), другой второстепенный(2). Оба находятся в одной папке. Каждая ячейка в файле 1 имеет гиперссылку на определенную ячейку в файле 2 и также обратно, для возвращения в основной файл.
В файле 1 гиперссылки не имели полного адреса расположения файла 2 в сетевой папке, что давало возможность копировать папку с обоими файлами, допустим, на флешку, и не ломая гиперссылки. Фактически адрес ссылки выглядел так: "Файл 2.xlsm#'Имя Листа'!Номер ячейки"
Сейчас на сетевом ресурсе что-то произошло, и в гиперссылках появились лишние адреса. В итоге всё начало выглядить так: /../../../Папка/Папка/"Файл 2.xlsm#'Имя Листа'!Номер ячейки". Можно ли при помощи какого-либо макроса удалить часть адреса гиперссылки, ну или заменить на пустоту сразу во всех гиперссылках документа?Их больше тысячи. Хэлп ми!!!
Kazakoff88 вне форума Ответить с цитированием
Старый 19.06.2014, 16:23   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Можно ли при помощи какого-либо макроса удалить часть адреса гиперссылки
нет, нельзя

вы только поиском не пользуйтесь в гугле, - а то сразу найдете решение типа этого:
http://excelvba.ru/code/replace_hyperlinks
EducatedFool вне форума Ответить с цитированием
Старый 19.06.2014, 16:48   #3
Kazakoff88
 
Регистрация: 19.06.2014
Сообщений: 8
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
нет, нельзя

вы только поиском не пользуйтесь в гугле, - а то сразу найдете решение типа этого:
http://excelvba.ru/code/replace_hyperlinks
Если бы оно мне помогло,я бы сюда не писал.
Kazakoff88 вне форума Ответить с цитированием
Старый 19.06.2014, 17:10   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Не помогло?
так вы покажите, как вы применяли этот макрос...

вообще, тут все просто делается, за пару секунд, без всяких макросов
(если речь по ссылки в ФОРМУЛАХ)

Нажимаем Ctrl + H (для вызова диалогового окна поиска и замены),
в поле «Что заменить» вводим /../../../Папка/Папка/
задаем область поиска - во всей книге,
и жмём кнопку ЗАМЕНИТЬ ВСЕ

ну а если речь о ГИПЕРССЫЛКАХ, - то тогда тот мой макрос:
Код:
 ' часть гиперссылки, подлежащая замене
   oldString = "/../../../Папка/Папка/"
    ' на что заменяем
   newString = ""
EducatedFool вне форума Ответить с цитированием
Старый 19.06.2014, 17:39   #5
Kazakoff88
 
Регистрация: 19.06.2014
Сообщений: 8
По умолчанию

Вот мой макрос:
Sub test2()
On Error Resume Next
Dim hl As Hyperlink, s As String, sh As Worksheet
s = "../../../../Maintenance/Транспортная%20сеть/Транспортная%20сеть/" ' часть гиперссылки, подлежащая удалению
For Each sh In ActiveWorkbook.Worksheets
For Each hl In sh.Hyperlinks
If hl.Address Like s & "*" Then hl.Address = Replace(hl.Address, s, "")
Next
Next sh
End Sub

я создаю макрос, редактирую его, то есть вставляю полностью этот код. После чего я нажимаю выполнить макрос. Комп думает секунды 3. Все, больше ничего не происходит. я пробовал и на другом компе. Речь идет именно о гиперссылках.
Kazakoff88 вне форума Ответить с цитированием
Старый 19.06.2014, 17:41   #6
Kazakoff88
 
Регистрация: 19.06.2014
Сообщений: 8
По умолчанию

также я делал так:
Sub ЗаменаИспорченныхГиперссылок()
On Error Resume Next
Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet
' часть гиперссылки, подлежащая замене
oldString = "../../../../Maintenance/Транспортная%20сеть/Транспортная%20сеть/"
' на что заменяем
newString = ""
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

тоже никакой реакции. В настройках безопасности я тоже разрешил все макросы. Я всю голову уже сломал...
Kazakoff88 вне форума Ответить с цитированием
Старый 19.06.2014, 17:51   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

ну так, может, прикрепите пример файла, в котором будет хотя бы одна проблемная гиперссылка?
EducatedFool вне форума Ответить с цитированием
Старый 19.06.2014, 18:01   #8
Kazakoff88
 
Регистрация: 19.06.2014
Сообщений: 8
По умолчанию

я бы с радостью, но это коммерческая, мать ее, тайна...2 очень больших файла, из них сложно будет что-то вытащить...
беда в том, что ссылка была обычной, и кроме названия файла в ней ничего не было, а теперь появился путь....
Kazakoff88 вне форума Ответить с цитированием
Старый 19.06.2014, 18:25   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

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

или... можете продолжать перебирать варианты самостоятеьно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.06.2014, 18:53   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
можете продолжать перебирать варианты самостоятельно
Похоже, Игорь, что тут другого варианта нет...

На другом форуме - то же обсуждение - и тоже файл почему-то просят)
http://www.planetaexcel.ru/forum/ind...ssylok-v-knige
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зафиксировать событие (изменение) в книге? ЕленаС Microsoft Office Excel 27 31.12.2010 17:34
изменение номера страницы в Колонтитулах по всей книге Exel DimonJar Microsoft Office Excel 0 09.02.2010 20:12
Редактирование всех гиперссылок в книге Vogulus Microsoft Office Excel 3 20.01.2010 15:19
Массовое изменение цен Microsoft Excel 2007 ZooMKA Microsoft Office Excel 2 26.08.2009 18:15
массовое изменение свойств компонентов CraZZy RabbIt Компоненты Delphi 1 15.03.2009 23:13