前回はアドインで無効化する方法を書きましたが、そもそも元ファイルからハイパーリンクを削除してしまえばいいのでは?
と思いプログラムを考えてみました。
-
Excelのセキュリティ強化につながる?外部リンクやハイパーリンクを無効化するアドインの作成方法
はじめに Excelの外部リンクやハイパーリンクに関する問題 Excelは、複数のファイル間でデータを共有するために、外部リンクやハイパーリンク機能を提供しています。これらの機能を使用することで、Ex ...
Excelに設定されたハイパーリンクを削除するメリット
ファイルサイズの軽減
ハイパーリンクはファイルサイズを増やす要因になります。削除することでファイルサイズを軽減することができます。
また、ファイルを開く際の起動時間も改善されます。
ファイルの見やすさの向上
イパーリンクが多く存在する場合、セル内の文字列が見づらくなることがあります。削除することでセル内の文字列の可読性を向上させることができます。
セキュリティ上の理由
ハイパーリンクは、外部のファイルやウェブサイトにリンクするため、悪意のあるリンクが含まれる可能性があります。
そのため、削除することでセキュリティ上のリスクを軽減することができます。
ハイパーリンク削除VBAについて
早速プログラムを掲載します。このVBAは、まず削除したいファイルのフルパスを「A1」セルに設定し、
VBAを実行すると、対象ファイルが開かれます。
その後、すべてのシートからハイパーリンクを削除し、強制的にハイパーリンクを削除したファイルに上書き保存をする。という流れです。
Sub deleteHyperLinks()
Dim filePath As String
Dim wb As Workbook
Dim ws As Worksheet
Dim cell As Range
Dim hl As Hyperlink
' A1セルからファイルパスを取得する
filePath = Range("A1").Value
' 対象のExcelファイルを読み取り専用で開く
Set wb = Nothing
Set wb = Workbooks.Open(filePath, ReadOnly:=False, IgnoreReadOnlyRecommended:=True, Password:="", Editable:=False, WriteResPassword:="", UpdateLinks:=False)
' ワークシートのハイパーリンクを無効化する
For Each ws In wb.Worksheets
For Each cell In ws.UsedRange.Cells
If cell.Hyperlinks.Count > 0 Then
For Each hl In cell.Hyperlinks
hl.Delete
Next hl
End If
Next cell
Next ws
' 対象のExcelファイルを上書き保存するため、SavedプロパティをFalseに設定する
wb.Saved = False
Application.DisplayAlerts = False
' 対象のExcelファイルを強制的に上書き保存する
wb.SaveAs Filename:=filePath, FileFormat:=wb.FileFormat, AddToMru:=False
' 対象のExcelファイルを閉じる
wb.Close SaveChanges:=False
Application.DisplayAlerts = True
End Sub
上書き保存する際、ダイアログが表示されるため、DisplayAlertsをFALSEに設定し、ダイアログを表示させないようにし、保存完了後に再びDisplayAlertsをTRUEに設定し、他Excel操作時に影響が出ないように設定を戻しています。
最後に
この記事では、Excelファイルに設定されたハイパーリンクをVBAを用いて削除する方法を紹介しました。
Excelファイルの起動が遅かったり、ハイパーリンクを削除したい場合はぜひ参考にしてみてください。