Как программно удалить все гиперссылки в нужном рабочем листе?

code: #vba
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. Пример их использования можно увидеть здесь.

Актуально для MS Excel 97, 2000, XP

Поделиться:

Похожие статьи: