Программно удалить все гиперссылки в нужном рабочем листе- Visual Basic(Бейсик)

Private Sub DeleteAllHyperlinks()
    With ThisWorkbook.Worksheets(1)
         If Not .ProtectContents Then
            Dim iCell As Range: .Hyperlinks.Delete
            Set iCell = .UsedRange.Find(What:="=HYPERLINK(*)", _
            LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=True)
            Do Until iCell Is Nothing
               iCell.Style = "Normal"
               iCell.Value = iCell.Value
               Set iCell = .UsedRange.FindNext
            Loop
         Else
            MsgBox "Снимите защиту листа", vbExclamation, ""
         End If
    End With
End Sub
Удаление гиперссылок не приводит к удалению текста гиперссылок. Если такое положение вещей недопустимо, то используйте перебор всех гиперссылок, только учтите, что гиперссылка может быть связана не только с ячейкой, но и с автофигурой/рисунком.
Если гиперссылок, созданных с использованием стандартной функции рабочего листа =ГИПЕРССЫЛКА() может быть довольно много и/или Вы используете событие Worksheet_Change() (или аналогичное событие рабочей книги, приложения), а также Volatile функции, то в этом случае, имеет смысл использовать свойства ScreenUpdating, EnableEvents, Calculation объекта Application. Пример их использования можно увидеть здесь.

Leave a Comment