
なぜ「リンクの更新」メッセージが出るのか?
Excelを開いたときに「外部リンクの更新を確認しますか?」あるいは「リンクの自動更新が無効にされました」というメッセージが表示されることがあります。
![]()
しかし「自分ではリンクなんて設定していないのに…」と困るケースも多いでしょう。
実は、他のブックを参照する数式や貼り付けたグラフ・画像の元データに外部リンクが残っていることがあります。
放置するとファイルの読み込みが遅くなったり、共有時にエラーが出たりするため、リンクのあるセルを探して削除することが大切です。
リンクのあるセルを探す基本手順
Excelには直接「リンクを一覧表示する」機能はありませんが、次のような手順で効率的に探せます。
数式バーをチェックする
- シート内のセルを選択します。
- 数式バーに「[」や「]」が含まれていないかを確認します。
例:「='C:\Users\Sample[売上.xlsx]Sheet1'!A1」など。
→ 「[ブック名.xlsx]」が表示されていれば外部リンクです。
検索機能で「[」を探す
外部ブック参照は必ず「[」から始まるので、検索機能で一括確認できます。
- Ctrl + Fキーを押して「検索と置換」ダイアログを開きます。
- 「検索する文字列」に「[」を入力。
- 「すべて検索」をクリックします。
これで、リンクを含む数式が一覧で表示されます。
特定したセルをクリックすれば該当箇所へジャンプできます。
「名前の管理」でリンクをチェック
意外と見落としがちなのが「名前定義」に埋まったリンクです。
- 「数式」タブ → 「名前の管理」をクリック。
- 一覧の「参照範囲」に外部ブックパス(例:「C:\」など)が入っていないか確認します。
不要なリンクがあれば「削除」または「参照範囲」を修正します。
グラフやオブジェクト内のリンクを見つける
外部リンクはセル以外にも潜んでいます。
- グラフのデータ元範囲
- 画像や図形に設定されたハイパーリンク
- フォームコントロールのリンク先セル
これらは「右クリック → ハイパーリンクの編集」などで確認できます。
特に、グラフを他のブックからコピーした場合にリンクが残ることが多いため注意しましょう。
応用:VBAでリンクを一括検出する方法
大量のシートを確認するのは大変…という場合には、簡単なVBAを使うと便利です。
以下のコードをモジュールに貼り付けて実行すると、外部リンクを含むセルを一覧表示できます。
__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活用法を組み合わせることで、どんなリンクも漏れなく特定できます。
ファイルを軽く保ち、共有時のエラーを防ぐためにも、定期的なチェックをおすすめします。
関連記事・広告