Я не знаю другого пути, кроме макроса. Но похоже, что кто-то уже написал один , чтобы сделать это.
Public Sub ReplaceHyperlinkURL(FindString As String, ReplaceString As String) Dim LinkURL As String Dim PreStr As String Dim PostStr As String Dim NewURL As String Dim FindPos As Integer Dim ReplaceLen As Integer Dim URLLen As Integer Dim MyDoc As Worksheet Dim MyCell As Range On Error GoTo ErrHandler Set MyDoc = ActiveSheet For Each MyCell In MyDoc.UsedRange If MyCell.Hyperlinks.Count > 0 Then LinkURL = MyCell(1).Hyperlinks(1).Address FindPos = InStr(1, LinkURL, FindString) If FindPos > 0 Then 'If FindString is found ReplaceLen = Len(FindString) URLLen = Len(LinkURL) PreStr = Mid(LinkURL, 1, FindPos - 1) PostStr = Mid(LinkURL, FindPos + ReplaceLen, URLLen) NewURL = PreStr & ReplaceString & PostStr MyCell(1).Hyperlinks(1).Address = NewURL 'Change the URL End If End If Next MyCell Exit Sub ErrHandler: MsgBox ("ReplaceHyperlinkURL error") End Sub Public Sub WBReplaceHyperlinkURL(FindString As String, ReplaceString As String) 'For all sheets in the workbook Dim LinkURL As String Dim PreStr As String Dim PostStr As String Dim NewURL As String Dim FindPos As Integer Dim ReplaceLen As Integer Dim URLLen As Integer Dim MyDoc As Worksheet Dim MyCell As Range On Error GoTo ErrHandler For Each WS In Worksheets WS.Activate Set MyDoc = ActiveSheet For Each MyCell In MyDoc.UsedRange If MyCell.Hyperlinks.Count > 0 Then LinkURL = MyCell(1).Hyperlinks(1).Address FindPos = InStr(1, LinkURL, FindString) If FindPos > 0 Then 'If FindString is found ReplaceLen = Len(FindString) URLLen = Len(LinkURL) PreStr = Mid(LinkURL, 1, FindPos - 1) PostStr = Mid(LinkURL, FindPos + ReplaceLen, URLLen) NewURL = PreStr & ReplaceString & PostStr MyCell(1).Hyperlinks(1).Address = NewURL 'Change the URL End If End If Next MyCell Next WS MsgBox ("Hyperlink Replacement Complete") Exit Sub ErrHandler: MsgBox ("ReplaceHyperlinkURL error") End Sub
Код должен быть помещен в модуль кода VBA. Из электронной таблицы откройте
редактор VBA на ленте разработчика. Лента разработчика может быть
включен в популярной вкладке параметров Excel. Затем выберите Вставить -
Модуль из меню. Скопируйте код и вставьте его в модуль. затем
сохранить модуль.
Для запуска процедуры создайте макрос, который содержит следующие
линии и запустить макрос в Excel. Обязательно замените FindText на
часть адреса, которую вы хотите найти, и ReplaceText на
текст, которым вы хотите заменить его.
Call ReplaceHyperlinkURL("FindText", "ReplaceText")
Пожалуйста, сделайте резервную копию своей электронной таблицы перед
запуск макроса на случай ошибки в FindText или
ReplaceText. Если вы хотите выполнить поиск и заменить на все
листов в рабочей книге, используйте процедуру WBReplaceHyperlinkURL, а не
чем заменить HyperlinkURL.