Добрый день, уважаемые форумчане! Требуется ваша помощь.
Есть реестр учета контрактов объемом более 1000 строк. Для удобства сделаны гиперссылки к самим договорам.
Договора находятся в сетевой папке. Адрес к ним получается типа: \\192.168.1.200\Обмен\Договор.xlsx
Ссылки делаются через контекстное меню: ПКМ - Гиперссылка - выбор пути к файлу
При случайном перемещении реестра и возврате обратно ломаются гиперссылки к файлу. Так как пользуются данной таблицей несколько сотрудников, я устал уже чинить гиперссылки и никто не признается кто сломал.
До сего момента я чинил ссылки найденным здесь макросом:
Сейчас данный код почему-то перестал работать. Кстати, почему? Ошибку не найду.
Появилась мысль переделать все гиперссылки из контекстного меню в функцию ГИПЕРССЫЛКА, чтобы можно было в случае чего менять пути путем автозамены части текста в формуле.
Но в эту формулу путь к файлу необходимо будет прописывать вручную, что проблематично для некоторых пользователей.
Как бы реализовать кнопку выбора файла в проводнике для функции ГИПЕРССЫЛКА?
Во вложении пример файла.
Есть реестр учета контрактов объемом более 1000 строк. Для удобства сделаны гиперссылки к самим договорам.
Договора находятся в сетевой папке. Адрес к ним получается типа: \\192.168.1.200\Обмен\Договор.xlsx
Ссылки делаются через контекстное меню: ПКМ - Гиперссылка - выбор пути к файлу
При случайном перемещении реестра и возврате обратно ломаются гиперссылки к файлу. Так как пользуются данной таблицей несколько сотрудников, я устал уже чинить гиперссылки и никто не признается кто сломал.
До сего момента я чинил ссылки найденным здесь макросом:
Код |
---|
Sub ЗаменаИспорченныхГиперссылок() On Error Resume Next Dim hl As Hyperlink, oldString As String, newString As String, sh As Worksheet ' часть гиперссылки, подлежащая замене oldString = "\\192.168.0.200\Users\User\AppData\Roaming\Microsoft" ' на что заменяем newString = "\\192.168.0.200\обмен" 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 |
Сейчас данный код почему-то перестал работать. Кстати, почему? Ошибку не найду.
Появилась мысль переделать все гиперссылки из контекстного меню в функцию ГИПЕРССЫЛКА, чтобы можно было в случае чего менять пути путем автозамены части текста в формуле.
Но в эту формулу путь к файлу необходимо будет прописывать вручную, что проблематично для некоторых пользователей.
Как бы реализовать кнопку выбора файла в проводнике для функции ГИПЕРССЫЛКА?
Во вложении пример файла.