その他小技 EXCEL&VBA

Excelでリンクのあるセルを探す方法

なぜ「リンクの更新」メッセージが出るのか?
Excelを開いたときに「外部リンクの更新を確認しますか?」あるいは「リンクの自動更新が無効にされました」というメッセージが表示されることがあります。

しかし「自分ではリンクなんて設定していないのに…」と困るケースも多いでしょう。

実は、他のブックを参照する数式や貼り付けたグラフ・画像の元データに外部リンクが残っていることがあります。
放置するとファイルの読み込みが遅くなったり、共有時にエラーが出たりするため、リンクのあるセルを探して削除することが大切です。



リンクのあるセルを探す基本手順

Excelには直接「リンクを一覧表示する」機能はありませんが、次のような手順で効率的に探せます。

数式バーをチェックする

  1. シート内のセルを選択します。
  2. 数式バーに「[」や「]」が含まれていないかを確認します。
    例:「='C:\Users\Sample[売上.xlsx]Sheet1'!A1」など。

→ 「[ブック名.xlsx]」が表示されていれば外部リンクです。

検索機能で「[」を探す

外部ブック参照は必ず「[」から始まるので、検索機能で一括確認できます。

  1. Ctrl + Fキーを押して「検索と置換」ダイアログを開きます。
  2. 「検索する文字列」に「[」を入力。
  3. 「すべて検索」をクリックします。

これで、リンクを含む数式が一覧で表示されます。
特定したセルをクリックすれば該当箇所へジャンプできます。

「名前の管理」でリンクをチェック

意外と見落としがちなのが「名前定義」に埋まったリンクです。

  1. 「数式」タブ → 「名前の管理」をクリック。
  2. 一覧の「参照範囲」に外部ブックパス(例:「C:\」など)が入っていないか確認します。

不要なリンクがあれば「削除」または「参照範囲」を修正します。

グラフやオブジェクト内のリンクを見つける

外部リンクはセル以外にも潜んでいます。

  • グラフのデータ元範囲
  • 画像や図形に設定されたハイパーリンク
  • フォームコントロールのリンク先セル

これらは「右クリック → ハイパーリンクの編集」などで確認できます。

特に、グラフを他のブックからコピーした場合にリンクが残ることが多いため注意しましょう。

応用:VBAでリンクを一括検出する方法

大量のシートを確認するのは大変…という場合には、簡単なVBAを使うと便利です。

以下のコードをモジュールに貼り付けて実行すると、外部リンクを含むセルを一覧表示できます。

Sub 外部リンクを探す改良版()
__Dim ws As Worksheet
__Dim c As Range
__Dim resultWs As Worksheet
__Dim nextRow As Long
__Dim formulaText As String
__' 既存の「リンク一覧」シートがあれば削除
__On Error Resume Next
__Application.DisplayAlerts = False
__ThisWorkbook.Worksheets("リンク一覧").Delete
__Application.DisplayAlerts = True
__On Error GoTo 0
__' 結果出力用のシートを作成
__Set resultWs = ThisWorkbook.Worksheets.Add
__resultWs.Name = "リンク一覧"
__' 見出し
__resultWs.Range("A1:D1").Value = Array("シート名", "セルアドレス", "数式/値", "リンクの種類")
__nextRow = 2
__' 全シートを検索
__For Each ws In ThisWorkbook.Worksheets
__If ws.Name <> resultWs.Name Then
__For Each c In ws.UsedRange
__' 数式セルを優先的にチェック
__If c.HasFormula Then
__formulaText = c.Formula
__' 外部ファイルリンクを検出([ブック名]を含む)
__If InStr(formulaText, "[") > 0 Then
__resultWs.Cells(nextRow, 1).Value = ws.Name
__resultWs.Cells(nextRow, 2).Value = c.Address(False, False)
__resultWs.Cells(nextRow, 3).Value = formulaText
__resultWs.Cells(nextRow, 4).Value = "外部ブック参照"
__nextRow = nextRow + 1
__End If
__ElseIf c.Hyperlinks.Count > 0 Then
__' ハイパーリンクを検出
__Dim hl As Hyperlink
__For Each hl In c.Hyperlinks
__resultWs.Cells(nextRow, 1).Value = ws.Name
__resultWs.Cells(nextRow, 2).Value = c.Address(False, False)
__resultWs.Cells(nextRow, 3).Value = hl.Address
__resultWs.Cells(nextRow, 4).Value = "ハイパーリンク"
__nextRow = nextRow + 1
__Next hl
__End If
__Next c
__End If
__Next ws
__' 結果シートを見やすく整形
__resultWs.Columns("A:D").AutoFit__MsgBox "外部リンクの検索が完了しました。" & vbCrLf & _
__"結果は「リンク一覧」シートに出力されました。", vbInformation
End Sub

実行後、「イミディエイトウィンドウ」にリンクセルのシート名とアドレスが表示されます。
(※VBAが苦手な方は、検索機能と名前管理で十分対応可能です)

まとめ|不要なリンクを見逃さないために

Excelで「リンクの更新確認」が出るときは、

  • 数式内
  • 名前定義
  • グラフ・オブジェクト
    に外部リンクが残っているケースがほとんどです。

今回紹介した「検索」や「名前の管理」、VBA活用法を組み合わせることで、どんなリンクも漏れなく特定できます。
ファイルを軽く保ち、共有時のエラーを防ぐためにも、定期的なチェックをおすすめします。

関連記事・広告






-その他小技, EXCEL&VBA
-