Czasami chcemy usunąć wszystkie hiperłącza w aktywnym arkuszu. Do napisania tej notki zainspirował mnie wpis z mojego drugiego bloga: Walidacja adresów e-mail w Excelu.
Podczas wklejania adresów e-mail do arkusza czasami Excel mi automatycznie tworzył z adresów e-mail hiperłącza. A ja tego nie chciałem. Wiem, można w ustawieniach autokorekty wyłączyć automatyczne tworzenie hiperłączy ale załóżmy, że od kogoś już otrzymaliśmy taki skoroszyt i chcemy się pozbyć wszystkich hiperłączy z arkusza.
W tym celu napisałem dwie bliźniacze procedury. Jedna z nich (UsunWszystkieHiperlacza) usuwa hiperłącza z całego aktywnego arkusza a druga (UsunHiperlaczWZaznaczeniu) tylko z zaznaczonych komórek.
Sub UsunWszystkieHiperlacza()
Dim Sheet As Worksheet
Dim Cell As Range
If ActiveSheet.Type <> xlWorksheet Then
MsgBox "Makro działa tylko w zwykłych arkuszach", vbExclamation
Exit Sub
End If
Set Sheet = ActiveSheet
For Each Cell In Sheet.UsedRange
If Cell.Hyperlinks.Count > 0 Then
Cell.Hyperlinks.Delete
End If
Next Cell
End Sub
Sub UsunHiperlaczWZaznaczeniu()
Dim Cell As Range
If ActiveSheet.Type <> xlWorksheet Then
MsgBox "Makro działa tylko w zwykłych arkuszach", vbExclamation
Exit Sub
End If
For Each Cell In Selection
If Cell.Hyperlinks.Count > 0 Then
Cell.Hyperlinks.Delete
End If
Next Cell
End Sub
Na początku mamy sprawdzenie czy znajdujemy się w „normalnym” arkuszu (w przypadku Excela mamy jeszcze arkusze typu Makro Excel 4.0 albo arkusz typu Wykres). Jeśli jesteśmy w zwykłym arkuszu to potem jest prosta pętla For Each, która dla każdej komórki w zakresie (arkusz lub zaznaczenie w zależności od wybranej procedury) sprawdzamy czy w danej komórce jest hiperłącze. Jeśli tak, to je usuwamy za pomocą metody Hyperlinks.Delete.
Zobacz również: Word – Jak usunąć wszystkie hiperłącza