Как программно удалить все гиперссылки в нужном рабочем листе?
Категория: Basic
2012-08-14 14:42:00
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
Поделиться: