Восстановление битых ссылок Excel

Бывает так, что при перемещении файла Excel в нем “ломаются” ссылки на другие сетевые или локальные файлы, кроме того при открытии вы наблюдаете ошибку:

Все ссылки разом можно исправить несложным VBS скриптом https://excelvba.ru/code/replace_hyperlinks:

Sub ЗаменаИспорченныхГиперссылок2()
    On Error Resume Next
    Dim hl As Hyperlink, oldString$, newString$, sh As Worksheet, n&, msg$, coll As New Collection, Item
 
    ' часть гиперссылки, подлежащая замене
    oldString = "../../AppData/Roaming/Microsoft/Excel/"
    ' на что заменяем
    newString = "C:\Users\Admin\Desktop\ОТЧЁТЫ ВСЕ\"
 
    For Each sh In ActiveWorkbook.Worksheets    ' перебираем все листы в активной книге
        For Each hl In sh.Hyperlinks    ' перебираем все гиперссылки на листе
            ' Debug.Print hl.Address
            If (hl.Address Like oldString & "*") Or (hl.Address Like Replace(oldString, "/", "\") & "*") Then
                hl.Address = Replace(hl.Address, oldString, newString, , , vbTextCompare)
                hl.Address = Replace(hl.Address, Replace(oldString, "/", "\"), newString, , , vbTextCompare)
                n = n + 1
            Else
                If InStr(1, hl.Address, "mailto", vbTextCompare) = 0 Then coll.Add hl.Address, UCase(hl.Address)
            End If
        Next
    Next sh
 
    For Each Item In coll
        msg$ = msg$ & Item & vbNewLine
    Next
 
    MsgBox "Заменено гиперссылок: " & n & IIf(Len(msg$), vbNewLine & vbNewLine & _
                                                         "Также в файле найдены ссылки на:" & vbNewLine & msg$, ""), vbInformation
End Sub

Последовательность действий https://sovet.livejournal.com/2397.html:

1. Нажимаем Alt+F11
2. В меню открывшегося окна Microsoft Visual Basic выбираем Insert…—Module
3. В открывшемся документе вставляем код макроса (см. выше)
4. Закрываем окно Microsoft Visual Basic
5. Нажимаем Alt+F8
6. В открывшемся окне выделяем созданный макрос и запускаем

При замене путей на свои в макросе следите за корректностью кодировки.

Оставьте ответ

Ваш адрес email не будет опубликован.

20 ÷ = 2