リンク切れしにくい別ファイルの参照方法【エクセルで転記の自動化】

はじめに
- 「別のエクセルファイルのデータを再利用して、
コピペ・転記する手間を減らしたい」 - 「前に外部参照の設定をしたエクセルファイルがあるけど、
リンク切れが多発して使いづらい…」 - 「リンク切れの心配があるため、
毎回、 最新データを探して手作業でコピペしている」
このような悩みを感じたことはありますか?
エクセルで外部の別ファイル(ブック)
しかし、

学生時代は、
この記事では、
-
リンク切れしにくい堅牢な外部参照ができるようになる。
-
手作業による転記作業を減らす考え方 (転記の自動化やデータベースの運用方法)
の基本がわかるようになる。
Power Queryで構造化参照(テーブル参照)
【ページ内リンク】
エクセルにおける外部参照とは
外部参照とは、
データ活用において重要ですが、
ソースブックとコピー先ブックの定義
外部参照を考えるときには、
| 記事内での呼称 | 別称 | 役割 |
|---|---|---|
| ソースブック | 参照 元元 ・リンク 元元 | データを格納し、 |
| コピー先ブック | 参照 先先 ・リンク 先先 | データを受け取り、 |
Microsoft公式の説明がややこしい
Microsoftの公式のドキュメント(日本語)
「リンク 先先 」
(おそらく和訳上の問題)
ソースブックとコピー先ブックの違いを理解する:
リンクを含むブックは リンク先ブック(destination workbook)と呼ばれ、リンク先 のブックは ソースブック(source workbook) と呼ばれます。
この記事では「ソースブック」

外部参照を活用すると、
課題は「リンク切れ」
外部参照を使用する上で最も考慮すべきことはリンク切れです。
外部参照先を指定する方法には、
- ブックの指定方法:「絶対パス」
「相対パス」 の2通り - セルの指定方法:「セル参照」
「構造化参照(テーブル参照) 」 の2通り
ブックの指定方法:「絶対パス」 と「相対パス」
ソースブックの場所ソースブックの場所 を指定する方法には、
| パス指定方法 | 定義 | 安定性 | おすすめの用途 |
|---|---|---|---|
| 絶対パス | ドライブのルートからの場所を指定する。 例:C:\Users\ユーザー名\Desktop\ソースブック.xlsx | ✅ ソースブックの位置が変わらなければ安定。 | データベースなど、 |
| 相対パス | コピー先ブックから見た、 例:.\ソースブック.xlsx(同じフォルダ) | ✅ ソースブックとコピー先ブックの相対的な位置関係が変わらなければ、 | 1つのプロジェクトフォルダ内で完結させる場合に有効。 |

用途によってリンクが切れにくい方を選択し、
セルの指定方法:「セル参照」 と「構造化参照(テーブル参照) 」
ソースブック 内のデータの場所内のデータの場所 を指定する方法には、
| 参照方法 | 説明 | リンク切れのリスク | おすすめの用途 |
|---|---|---|---|
| セル参照 | シート名 と セル位置を指定する。 例:シート名!A1 | ❌ 高い ※ | 一時的な使用や、 |
| 構造化参照(テーブル参照) | テーブル名 と 列見出しを指定する。 例:テーブル名[見出し名] | ✅ 低い | 継続的なデータ取得が必要な場合に適す。 |
※ 外部参照ではない場合(参照先と参照元が同一ブックの場合)

継続的に外部参照を維持する場合は、
なぜ「構造化参照(テーブル参照) 」 が有利なのか
エクセルで外部参照を行う際、
❌ セル参照の弱点
セル参照では、
この方法はシンプルですが、
- 位置の変更に弱い:
ソースブックのシートで、データが格納されているセルが移動すると、 参照場所が意図しない位置にズレてしまいます。
データ位置の上に行を挿入したり、左に列を挿入したりするだけでこの問題が生じます。 - シート名の変更に弱い:
シート名を後から変更するとリンクが切れます。 - データ数の増加に弱い:
複数のデータを範囲参照している場合、データを追加しても参照範囲は固定であるため、
最新のデータを取り込むためにはコピー先ブックの数式を手動で修正する必要があります。

外部参照をするときに、
✅ 構造化参照(テーブル参照) の利点
構造化参照(テーブル参照)
- 構造変更に強い:
テーブルの位置、テーブルの列の順序が変わってもリンクは切れません。
テーブルの中・周り問わず、「行/列の追加・削除」 が気軽に使えます。 - シート名の変更が可能:
テーブルが格納されているシート名を変更しても、リンクは維持されます。
テーブルを別シートに移動することも可能です。 - データ数の増加に自動対応:
複数のデータを範囲参照している場合でも、
テーブルに行を追加すると、参照範囲が自動で拡大するため、 最新データが自動で反映されます。
日常的なデータ編集(データの追加や並び替え、

外部参照を用いて、
外部参照の3つの方法 と 比較
エクセルで外部参照を行うには、
- 方法1. 参照数式
- 方法2. Power Query
- 方法3. VBA
方法1. 参照数式:セルに数式を記入する方法
最も一般的な方法です。
設定方法
コピー先ブック内のセルに数式を記入し、
以下が数式の例です。
-
セル参照:
='フォルダ名\[ファイル名.xlsx]シート名'!$A$1 -
構造化参照(テーブル参照)
:
='フォルダ名\ファイル名.xlsx'!テーブル名[見出し名]※ セル参照とは異なり、
ファイル名を角括弧で囲わなくてよい

数式入力中に、
上記のように、
相対パス表記と絶対パス表記は自動に変わる
ソースブックを相対パスで指定していても、
ソースブックを閉じると自動的に絶対パス(フルパス)
(細かいですが、
表記上では絶対パスでも、
ソースブックとコピー先ブックが同じフォルダにある場合は、
相対パスとして機能します。
Excelが内部で 自動的に「絶対パスか、
記入方法を変えても意味はありません。
フォルダ名の例
フォルダ名には、
- ローカルパス:
C:\Users\ユーザー名\Desktop\…\ - 共有フォルダ・ネットワークドライブ(NAS, ファイルサーバー)
:
\\server-name\…\ - クラウドストレージ:
https://d.docs.live.net/…/
リンク切れの症状と修正方法
外部参照がうまくいっていないと以下のような症状になります。
- セルに#REF!が表示される
→ リンクが切れた。 - 「更新できません リンクされたブックから更新された値を取得できませんでした」
と表示される
→ リンクが切れた。 - 意図したものと違う値になっている
→ 参照するセルの位置がズレた。
修正方法は、
ソースブックを開く
記入しているソースブックのパス(フォルダ名+ファイル名)
ソースブック内の場所指定が正しいか確認・修正する
手順3でダメだったら、
-
ソースブックを開く(Step 2を参考)
-
コピー先ブック中の数式のシート名・セル位置 または テーブル名・見出し名が、
ソースブック内に存在し、 正しいかを確認する。 「ブックのリンク」
欄で、 ソースブックを選択すると、
コピー先ブック内で使用しているセル位置にカーソルが移動します。
次を検索ボタンを押すと、さらに別のセルに移動します。
メリット・デメリット
✅ メリット
- 設定が簡単
- ソースブックの更新内容を即時反映できる
- 相対パスがすぐ使える(絶対パス/相対パスはExcelによって自動切り替えされる)
❌ デメリット
- 「構造化参照」
では、 ソースブックを開かず外部参照できない
「セル参照」では部分的に可能(直接参照のみ可、 間接参照は不可)

このデメリットは致命的です。
構造化参照では、 ソースブックを開かずに外部参照できない
参照数式では、
▼ ソースブックを開かず外部参照できるか
| 参照方法 | 参照方法の説明 | セル参照 | 構造化参照 |
|---|---|---|---|
| 直接参照 | 関数を使用しない参照 | ✅ OK | ❌ NG |
| 間接参照 | INDIRECT関数を使用した参照 | ❌ NG | |
| (関数内での参照) | INDIRECT以外の関数内で外部参照を使った場合 | 🟡 一部OK ※ |
※ セル参照であれば、
方法2. Power Query(推奨)
Power Queryは、

ソースブックを開かずに更新でき、
設定方法
データタブのデータの取得 > ファイルから > Excelブックから
設定方法の詳細や、
メリット・デメリット
✅ メリット
- 構造化参照(テーブル参照)
で取得するため、 ソースブック内のデータ変更・修正に強く、 リンクが切れにくい 。 - ソースブックを開かずに データの更新ができる。
- テーブル単位で取得できるため、
大量のデータを一度に参照できる。
❌ デメリット
- 設定画面やPower Queryエディターは、
初めて使う場合に戸惑う可能性あり。 多少の慣れが必要。 - ソースブック内のデータ更新を反映するには、
すべて更新ボタンのクリック(または自動更新設定)が必要となり、
即時反映はされない。 - 相対パスの設定に、
一手間かかる。
方法3. VBA
VBA(マクロ)

ただし、
設定方法(サンプルコード)
VBAで外部参照する方法にもいくつかあります。
以下は、
'--------------------------------------------------------------------------------------
' 外部のExcelブックから、指定されたテーブルの特定の列データを取得し、コピーするプロシージャ。
'--------------------------------------------------------------------------------------
Sub GetDataFromExternalTable()
' ## 1. 定数 (Const) の定義
' ソースブックの指定
Const SOURCE_PATH As String = "C:\Users\ユーザー名\Desktop\ソースブック名.xlsx" ' ブックのパス
Const SOURCE_TBL_NAME As String = "テーブル名" ' テーブル名
Const SOURCE_COL_NAME As String = "テーブルの見出し" ' テーブルの見出し
' コピー先ブックの指定
Const DEST_SHEET_NAME As String = "シート名" ' シート名
Const DEST_RANGE_START As String = "A1" 'セル(先頭)位置
' ## 2. 変数宣言
Dim wbSource As Workbook ' ソースブックオブジェクト
Dim ws As Worksheet ' ワークシートオブジェクト (ループ用)
Dim tbl As ListObject ' テーブルオブジェクト (ListObject)
Dim wsDest As Worksheet ' 転記先ワークシートオブジェクト
Dim data As Variant ' 取得したデータを格納する配列
' ## 3. 環境設定
Application.ScreenUpdating = False ' 画面更新の停止
Application.DisplayAlerts = False ' 警告メッセージの非表示
' ## 4. 外部ブックを開く(読み取り専用)
On Error Resume Next
Set wbSource = Workbooks.Open(Filename:=SOURCE_PATH, ReadOnly:=True, UpdateLinks:=0)
On Error GoTo ErrorHandler ' エラーハンドラを設定し直す
' 開けなかった場合のエラーチェック
If wbSource Is Nothing Then
MsgBox "エラー: 外部ファイルが見つからないか、開けませんでした。" & vbCrLf & SOURCE_PATH, vbCritical
GoTo CleanUp
End If
' ## 5. データの取得 (テーブルをソースブック内の全シートから探索)
For Each ws In wbSource.Worksheets
' エラー(テーブルがないシートで発生)を無視してテーブルを探す
On Error Resume Next
Set tbl = ws.ListObjects(SOURCE_TBL_NAME)
On Error GoTo ErrorHandler
If Not tbl Is Nothing Then
' テーブルが見つかったら、指定列のデータ部分を取得し配列に格納する
On Error Resume Next
data = tbl.ListColumns(SOURCE_COL_NAME).DataBodyRange.Value
On Error GoTo ErrorHandler
' データが配列として取得できたらループを抜ける
If IsArray(data) Then
Exit For
End If
End If
Next ws
' データが取得できなかった場合の最終チェック
If Not IsArray(data) Then
MsgBox "エラー: 指定されたテーブル名 (" & SOURCE_TBL_NAME & ") または列名 (" & SOURCE_COL_NAME & ") が見つかりませんでした。", vbCritical
GoTo CleanUp
End If
' ## 6. データの転記
' コピー先シートオブジェクトを取得
On Error Resume Next
Set wsDest = ThisWorkbook.Sheets(DEST_SHEET_NAME)
On Error GoTo ErrorHandler
' コピー先シートの存在チェック
If wsDest Is Nothing Then
MsgBox "エラー: 転記先シート (" & DEST_SHEET_NAME & ") がこのブックに見つかりません。", vbCritical
GoTo CleanUp
End If
' 取得した配列のサイズ(行数 UBound(data, 1) と列数 1)に合わせてコピー先の範囲をResizeし、データを一括転記する
wsDest.Range(DEST_RANGE_START).Resize(UBound(data, 1), 1).Value = data
MsgBox "完了しました!"
CleanUp:
' # 7. クリーンアップと環境復元
' 外部ブックが開いていれば閉じる (保存しない)
If Not wbSource Is Nothing Then
wbSource.Close False
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub ' 正常終了
ErrorHandler:
' 予期せぬエラー発生時の処理
MsgBox "実行時エラーが発生しました: " & Err.Number & " - " & Err.Description, vbCritical
Resume CleanUp ' クリーンアップに進む
End Subメリット・デメリット
✅ メリット
- 構造化参照(テーブル参照)
が可能で、 チェックやエラー処理なども細かく組み込めるため、 プログラム次第では非常に堅牢な外部参照を実現できる。 - ブックを開かずに更新できる。
- 応用範囲、
自由度の幅が広い。
❌ デメリット
- 上級者向けで、
VBAの知識が必須。 - 仕組みの ブラックボックス化がしやすい。
3つの方法の比較:Power Queryがオススメ
外部参照ができる3つの方法
| 項目 | 方法1. 参照数式 | 方法2. Power Query | 方法3. VBA |
|---|---|---|---|
| 設定の難易度 | ✅ 簡単 | 🟡 中程度 (慣れが必要) | ❌ 高度 (VBAの知識が必須) |
| リンクの堅牢性 | ❌ 低い (データ構造の変更に弱い) | ✅ 高い (構造化参照/テーブル参照で安定) | ✅ 高い (構造化参照/テーブル参照で安定+エラー処理可能) |
| ブックを開かず更新 | ❌ 限定的 (セル参照での直接参照のみ可能) | ✅ できる | ✅ できる (実質) |
| 即時反映 | ✅ できる (リンク元変更で即時反映) | ❌ できない (手動または自動更新設定が必要) | ❌ できない (VBA実行や手動更新が必要) |
| 大量データ取得 | ❌ 不向き (取得がセル単位) | ✅ 得意 (テーブル単位で取得可能) | ✅ 可能 (テーブル単位で取得可能) |
| データ加工・整形 | ❌ できない | ✅ 非常に得意 (エディターで可能) | ✅ 可能 (プログラム次第) |
| 用途 | 数カ所程度の少量データを一時的に即時取得したい場合に適す。 | 安定したリンクで最新データを継続的に取得したい場合や、 | 複雑な例外処理や特殊なシステム連携が必要な場合に有効。 |

「ソースブックを開かず」
Power Queryを使った外部参照の方法
外部参照によって、
具体的な外部参照の設定方法と管理・メンテナンス方法を解説します。
設定方法
Power Queryで外部参照する手順は、
以下は、
取り出すデータはテーブル化しておく
ソースブック内のデータはテーブルに格納しておく必要があります。
テーブルの作成は、
挿入タブのテーブルボタン(ショートカットキー Ctrl + t)
データを取り込む
ソースブックから取り出すテーブルを選択します。
-
データタブのデータの取得プルダウン > ファイルから > Excelブックからを選択し、
参照するソースブックを選ぶ。 
-
ナビゲーターウィンドウで参照するテーブルを選択し、
以下の通りに進む(テーブルを加工するかどうかによって変わる) - テーブルをそのまま配置する場合:
読み込み先ボタン横のプルダウン > 読み込み先...を選択。 → テーブルの配置画面になる(「テーブルとして配置」 へ) 。 - テーブルを加工して配置する場合:
データの変換を選択。 → Power Queryエディターが起動(「2. データの加工・整形」 へ)

- テーブルをそのまま配置する場合:
データの加工・整形(必要に応じて)
データの変換を選んだ場合、
加工・整形が終わったら、
-
行の並び替え:
列の見出し内の「フィルタボタン」を選択 > 昇順で並び替え(または 降順で並び替え) を選択 -
列の並び替え:
列の見出しをドラッグ&ドロップ -
行の削除(フィルタリング)
:
ホームタブの行の削除ボタンを選択 > フィルタリング条件を選択※ 重複の削除を行う場合は、
事前に列を選択しておく必要あり 特定の列の値を基に削除する場合
列の見出し の「フィルタボタン」
を選択 > フィルタ条件を選択(または、 不要な値のチェックを外す) -
列の削除:
列の見出しを選択 > ホームタブの列の削除を選択

外部参照設定の管理とメンテナンス
Power Queryで外部参照の設定を行ったあとは、
- データの更新(最新データの反映)
:
ソースブック内でデータの変更があったときに、コピー先ブックに変更内容を反映します。 - 自動更新設定:
「データの更新」は、 デフォルトでは手動で実行する必要があります。
これを「ファイルを開いたとき」や「一定の時間間隔」 で自動に実行されるように設定できます。 - リンク先の変更・リンク切れ修正:
ソースブックの場所を変更したいときや、リンク切れが生じていたときに、
接続先を変更します。 - リンクの解除:
外部参照が不要になったときは、リンクを解除できます。
1. データの更新(最新データの反映)
ソースブック内のデータの変更内容は、
手順は以下のいずれかです。
- データタブのすべて更新を押す。
- コピー先ブック内のテーブルを右クリック > 更新を選択。
2. 自動更新設定
手動で行う必要のある「データの更新」
設定画面(クエリプロパティ)
自動更新の設定
クエリプロパティウィンドウの使用タブで以下を設定します。
-
一定の時間間隔で更新したい場合:
定期的に更新するにチェックを入れ、更新する時間間隔を設定する。 -
ファイルを開いたときに自動更新したい場合:
ファイルを開くときにデータを更新するにチェックを入れる(コピー先ブック内に、
ソースブックのデータを保存して残したくない場合は
ブックを保存する前に外部データ範囲からデータを削除するにもチェックを入れる ※)。
※「ファイル容量を小さくしたい」
ただし、

3. リンク先の変更・リンク切れ修正
ソースブックを別のフォルダに移動した場合など、
「リンク切れしているクエリ」
「どのクエリ(外部参照の設定)
「リンク切れが生じている設定のパスは何か」
を確認するには、
4. リンクの解除
外部参照が不要になったときには、
外部参照するときの注意点
Power Queryで外部参照する場合には、
- ソースブックの「ファイルパス」
と「データ構造」 は固定する - 更新ダイアログが出る可能性あり
- クラウドストレージ(OneDrive/SharePointなど)
利用時は設定次第でリンク切れしやすい
1. ソースブックの「ファイルパス」 と「データ構造」 は固定する
Power Queryを使った場合であっても、
- ソースブックのファイルパス(格納フォルダとファイル名)
- ソースブック内のテーブル名と見出し名(構造化参照/テーブル参照を使用する場合)
- ソースブック内の シート名 と セル位置(セル参照を使用する場合)
データ構造の変更に対して強いのが構造化参照(テーブル参照)
2. 更新ダイアログが出る可能性あり
外部参照の設定をしていると、
その場合は、
3. クラウドストレージ(OneDrive/SharePointなど) 利用時は設定次第でリンク切れしやすい
Power Queryで
-
ローカル同期フォルダ内を参照する方法:
C:\Users\ユーザー名\OneDrive\ のような、
ローカルにコピー・同期されたフォルダ内のファイルパスで接続します
(Power Queryでは、データタブのデータの取得 > ファイルから > Excelブックから を選択して接続設定する) 。
吉峰複数デバイスや複数アカウントを使ってファイル同期している場合は、
ファイルパスが変わるので注意が必要です。 たとえば、 デバイスが変わるとC:の部分が、 アカウントが変わるとユーザー名の部分が変わったりします。 ソースブックとコピー先ブックの両方をクラウドストレージに格納し、
相対パス相対パス で外部参照をするとリンクが切れにくくなります。 Power Queryで相対パスを設定するには、
一手間必要です
(参照数式の場合は、同フォルダ内であれば自動的に相対パス扱いになる) 。 -
専用コネクタでファイルを参照する方法:
SharePointなど、
対応するコネクタがあれば、 クラウドのパス (https://d.docs.live.net/...など) から直接参照もできます。 こちらの場合は、
絶対パス絶対パス 設定でも安定します。
データ活用の基盤になる
外部参照を行う3つの方法

外部参照ができると、
外部参照は、
- データへのルール付け:
入力の効率化、表記ゆれ対策ができる。 - テーブルの結合(横)
:
データベースを辞書的に参照できる。テーブル間の関連付けや、 VLOOKUPのような動作が可能に。 - テーブルの結合(縦)
:
複数のテーブル(複数のファイル)から一気に一覧リストを作成できる。















