ファイルの作業中にハイパーリンクを一時的に無効にしてから、終了したらハイパーリンクを再度有効にするとします。可能な解決策の1つは、それらを別々の一時的なシートに格納することです。
Sub DisableLinks()
Dim ws As Worksheet
Dim ts As Worksheet
Set ts = ActiveSheet
Set ws = Worksheets.Add(after:=ts)
Dim hylink As Hyperlink
Dim destlink As Hyperlink
For Each hylink In ts.Hyperlinks
If hylink.Range.Value <> "" Then
ws.Range(hylink.Range.Address) = hylink.Range.Value
If hylink.SubAddress = "" Then
Set destlink = ws.Hyperlinks.Add(anchor:=ws.Range(hylink.Range.Address), Address:=hylink.Address, TextToDisplay:=hylink.TextToDisplay)
Else
ws.Hyperlinks.Add anchor:=ws.Range(hylink.Range.Address), Address:=hylink.Address, SubAddress:=hylink.SubAddress, TextToDisplay:=hylink.TextToDisplay
End If
hylink.Delete
End If
Next hylink
ws.Visible = xlVeryHidden
End Sub
Sub RestoreLinks()
Dim ws As Worksheet
Dim ts As Worksheet
Set ts = ActiveSheet
Set ws = Worksheets(ts.Index + 1)
ws.Visible = xlSheetVisible
Dim hylink As Hyperlink
For Each hylink In ws.Hyperlinks
If hylink.Range.Value <> "" Then
If hylink.SubAddress = "" Then
ts.Hyperlinks.Add anchor:=ts.Range(hylink.Range.Address), Address:=hylink.Address, TextToDisplay:=hylink.TextToDisplay
Else
ts.Hyperlinks.Add anchor:=ts.Range(hylink.Range.Address), Address:=hylink.Address, SubAddress:=hylink.SubAddress, TextToDisplay:=hylink.TextToDisplay
End If
hylink.Delete
End If
Next hylink
ws.Delete
End Sub
この情報はごくわずかであり、あなたの質問に答えるには不十分です。いくつかの(サンプル)データのスクリーンショットを追加してください。または、シートをより詳細に説明してください:固定列、固定行のハイパーリンク、その他のタイプの識別子がありますか? – Luuklag
さらに詳しい情報[vba-not-follow-hyperlinks](https://www.mrexcel.com/forum/excel-questions/733537-vba-not-follow-hyperlinks.html) – QHarr
このブックを戻しますか?ユーザー間で転送しますか?実際のハイパーリンクを保持するscreentipsオプションと現在のセルにリンクしている可視ハイパーリンクは、少しの再設計のように見えます。 – QHarr