PSD・AIをレイヤー単位で読み込んだ素材も、まずAEのフッテージ置換で正しいファイルへ再リンクできるか確認します。
この記事では、それで対象を直せない場合に保存コピーの.aepx内のパスを確認する方法を扱います。
この記事では、プロジェクトをテキスト形式で保存し、記述されているフッテージパスを直接テキスト置換して修正する手順を解説します。
2026年10月16日に、記事のVBScriptと配布ZIPを、After Effectsが保存した.aepxでも動く版に差し替えました。
それより前に配布していた版は、After Effectsが保存した.aepxでは置換せずに止まっていました。
まず、AE標準の再リンクで直せる例です。
移動したPSDのレイヤーが見つからないときの画面です。
「このプロジェクトを最後に保存してから、3個のファイルが見つかりません」という警告が出ました。

コンポジション「LayeredSource229」には、OrangeBox229、BlueBackground229、「レイヤー 1」の3つのレイヤーがありますが、コンポジションには何も表示されていません。
PSDを再リンクした後の画面です。
「2 個の不明だったアイテムが見つかりました」と表示されました。

通知を閉じると、コンポジションに青い背景とオレンジの四角が戻りました。
プロジェクトパネルの「LayeredSource229 レイヤー」フォルダーには、3件のPSDが並んでいます。

これは、撮影用に作った3レイヤーのPSDで、標準の再リンクを試した画面です。
.aepxの書き換えや、記事のVBScriptで再リンクした結果ではありません。
.psd/.aiレイヤーの素材パスをまとめて修正する手順
.aepx(XML形式)でプロジェクトを保存する
- After Effectsのメニューバーから「ファイル」→「別名で保存」→「XML 形式でコピーを保存」を選択して保存します。
- 拡張子が「.aepx」のファイルとして書き出されます。
Windows 11 Pro(10.0.26200)のAdobe After Effects 26.5.0(Build 89、日本語表示)では、「XML 形式でコピーを保存」は「ファイル」→「別名で保存」の中にありました。

.aepxファイル内のパスを編集する
- 任意のテキストエディタで.aepxファイルを開きます。
- エディタの検索機能を使い、フッテージパスが記述されている箇所を特定します。
<fileReference filetype="38425053" fullpath="C:\Users\namae\Desktop\test.psd" platform="Win" relativeAscendCountFromProject="1" relativeIndexIntoFullpath="24"/>- 置換機能を使用して、旧パスを新しい素材の保存先パスに一括置換します。
// 変更前
C:\Users\namae\Desktop\test.psd
// 変更後
C:\Users\namae\Desktop\新しいフォルダー\test.psd元の.aepと.aepxは保持し、編集した.aepxを別名保存します。
引用符や&などを含むパスはXMLの属性値としてエスケープし、After Effectsで開いて各レイヤーのリンクを確認します。
UTF-8のAEPXを別名出力するVBScript
UTF-8の.aepxを受け取り、fileReferenceのfullpath属性が完全一致する箇所だけを変更するWindows用VBScriptです。
After Effectsが保存した.aepxには、XMLの名前空間(xmlns)が付いています。
2026年10月16日に確かめたAfter Effects 26.5.0の.aepxでも、名前空間http://www.adobe.com/products/aftereffectsが付いていました。
2026年10月16日より前に配布していた版は、fileReferenceを探す1行が名前空間付きの.aepxに対応していませんでした。
そのため、旧パスと完全一致するfullpathが2件あっても1件も見つけられず、No exact double-quoted match, or ambiguous text; no output.と表示して何も出力せずに止まっていました。
下のコードと配布ZIPのrelink-copy.vbsは、この1行だけを名前空間に関係なく探す書き方に直した版です。
引数なし、置換0件、XML不正、既存の出力ファイルがある場合は保存しません。
UTF-8形式のテキスト処理に対応させるため、バッチファイルではなくVBScriptを採用しています。
Option Explicit
Dim fso, inputPath, outputPath, oldPath, newPath
Dim stream, text, doc, nodes, node, count, token, parts, result
oldPath = "C:\practice\old\test.psd"
newPath = "C:\practice\new\test.psd"
If WScript.Arguments.Count <> 1 And WScript.Arguments.Count <> 3 Then
WScript.Echo "Usage: cscript //nologo relink-copy.vbs input.aepx [oldPath newPath]"
WScript.Quit 2
End If
Set fso = CreateObject("Scripting.FileSystemObject")
inputPath = fso.GetAbsolutePathName(WScript.Arguments(0))
If WScript.Arguments.Count = 3 Then
oldPath = WScript.Arguments(1)
newPath = WScript.Arguments(2)
End If
If LCase(fso.GetExtensionName(inputPath)) <> "aepx" Or Not fso.FileExists(inputPath) Then
WScript.Echo "An existing .aepx input is required."
WScript.Quit 2
End If
If oldPath = "" Or newPath = "" Or oldPath = newPath Then
WScript.Echo "Supply different non-empty paths."
WScript.Quit 2
End If
If Not fso.FileExists(newPath) Then
WScript.Echo "New source file does not exist."
WScript.Quit 2
End If
outputPath = fso.BuildPath(fso.GetParentFolderName(inputPath), fso.GetBaseName(inputPath) & "-relinked.aepx")
If fso.FileExists(outputPath) Or fso.FolderExists(outputPath) Then
WScript.Echo "Output already exists; nothing overwritten."
WScript.Quit 2
End If
Set stream = CreateObject("ADODB.Stream")
stream.Type = 2
stream.Charset = "UTF-8"
stream.Open
stream.LoadFromFile inputPath
text = stream.ReadText(-1)
stream.Close
Set doc = CreateObject("Msxml2.DOMDocument.6.0")
doc.async = False
doc.resolveExternals = False
doc.setProperty "ProhibitDTD", True
If Not doc.loadXML(text) Then
WScript.Echo "Invalid XML or disallowed DTD; no output."
WScript.Quit 2
End If
Set nodes = doc.selectNodes("//*[local-name()='fileReference' and @fullpath]")
count = 0
For Each node In nodes
If node.getAttribute("fullpath") = oldPath Then count = count + 1
Next
token = "fullpath=""" & XmlEscape(oldPath) & """"
parts = Split(text, token, -1, 0)
If count = 0 Or UBound(parts) <> count Then
WScript.Echo "No exact double-quoted match, or ambiguous text; no output."
WScript.Quit 2
End If
result = Replace(text, token, "fullpath=""" & XmlEscape(newPath) & """", 1, -1, 0)
If Not doc.loadXML(result) Then
WScript.Echo "Result XML is invalid; no output."
WScript.Quit 2
End If
stream.Open
stream.WriteText result
stream.SaveToFile outputPath, 1
stream.Close
WScript.Echo "Replaced attributes: " & count & "; wrote a separate -relinked.aepx copy."
Function XmlEscape(value)
value = Replace(value, "&", "&")
value = Replace(value, "<", "<")
value = Replace(value, ">", ">")
value = Replace(value, """", """)
XmlEscape = value
End Function
2026年10月16日に直したのは、次の1行だけです。
以前の版を使っている場合は、この1行を書き換えるか、下の練習用ZIPをダウンロードし直してください。
' 変更前(名前空間付きの.aepxでは0件になる)
Set nodes = doc.selectNodes("//fileReference[@fullpath]")
' 変更後
Set nodes = doc.selectNodes("//*[local-name()='fileReference' and @fullpath]")スクリプトの注意点
修正版は元ファイルを上書きせず、同じフォルダーの「元名-relinked.aepx」へ出力します。
旧コードの上書き指定2は使いません。
配布版の先頭にあるoldPathとnewPathを、XML内で確認した旧素材と実在する新素材の絶対パスへ変更してから、.aepxをスクリプトへ渡します。
次はコンソールから3引数で同じ指定をする例です。
cscript //nologo relink-copy.vbs "C:\practice\copy.aepx" "C:\practice\old\test.psd" "C:\practice\new\test.psd"リンク切れ素材をすばやく検出する方法
プロジェクトパネル上部の検索バーに「見つけられない」と入力して絞り込みます。
.aepxから通常の.aepに戻す手順
After Effectsで.aepxを開き、「ファイル」→「別名で保存」からファイル形式または拡張子を「aep」に変更して保存します。
ファイルサイズの大小だけでは復元成功を判断できません。
.aepとして保存して開き直し、コンポジション・素材参照・レイヤー・必要なフレームが正しいかを確認します。
After Effectsの関連記事は、以下のリンク一覧から確認できます。

リンク切れを一括で再リンクするスクリプトについては、以下の記事を参照してください。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。 修正版は本文下の練習用ZIPを使います。リンク先リポジトリには旧版が含まれるため、同じコードとして扱わないでください。
フッテージ素材の読み込みやパスの修正に関する記事は、ほかにもあります。



原本を保持して置換結果を確かめる練習
練習用に別名保存した.aepxと、移動前後のPSDまたはAIを用意します。
UTF-8のXML内で対象のfileReferenceとfullpathを確認し、同じ旧ファイルを指す属性が何件あるか数えます。
フォルダー名だけの部分一致や、全プロジェクトの文字列置換はしません。
relink-copy.vbsのoldPathとnewPathを編集し、.aepxを渡します。
既存の出力があると停止するので、内容を確認せずに再実行して上書きしません。
成功時は置換した属性数と別名コピーの作成を表示します。
日本語や&を含むパスも属性として保持します。
| 入力 | 結果 | 切り分け |
|---|---|---|
| 旧パスの完全一致2件 | 属性2件を置換し別名出力 | 原本の内容が変わらない |
| 旧パスが見つからない | 出力せず停止 | XML内の大小文字・引用符・パスを確認 |
| 出力名が既存 | 出力せず停止 | 既存コピーを確認する |
補助的な相対パス属性やレイヤー対応の情報は書き換えていません。
XMLとして正常でもAEでの再リンク成功を保証するものではないため、コピーをAEで開いてPSD・AIの全対象レイヤーを確認します。
失敗したら編集前の.aepを開き、標準の置換操作へ戻ります。
After Effectsの実際のプロジェクトで確かめた結果(2026年10月16日)
Windows 11 Pro(10.0.26200)のAdobe After Effects 26.5.0(Build 89、日本語表示)で、直した版を実際のプロジェクトに使って確かめました。
BlueとRedの2レイヤーを持つ自作のPSDを、640×360・30fps・3秒のコンポジションとして読み込み、「XML 形式でコピーを保存」で.aepxを作りました。
この.aepxには、移動前のPSDを指すfullpathが2件(BlueとRed)、対象外の別の素材を指すfullpathが1件ありました。
新しいPSDの置き場所には、フォルダー名に日本語と&を含むパスを使いました。
直した版で旧パスと新パスを指定して実行すると、Replaced attributes: 2; wrote a separate -relinked.aepx copy.と表示され、別名の.aepxができました。

書き換わったのは対象の2件のfullpathだけで、対象外の素材を指す1件と、それ以外のXMLの文字列は変わっていませんでした。
元の.aepと.aepx、PSDのファイルも変わっていませんでした。
できた.aepxをAfter EffectsでCtrl+O(プロジェクトを開く)から開くと、2つのレイヤーは新しい場所のPSDを参照し、見つからない素材はありませんでした。
対象外の素材、コンポジションとレイヤーの名前、位置、アンカーポイント、スケール、レイヤーの長さは、置き換える前と同じでした。
さらに通常の.aepとして保存し、開き直しても同じ状態でした。

1秒の時点の画像を書き出して比べると、置き換える前のプロジェクト、置き換えた.aepx、保存し直した.aepの3つで、すべての画素が一致しました。
通常の.aepへの保存と開き直しはAfter Effectsのスクリプト機能で行ったため、メニューから保存する操作は確認に含めていません。
停止する条件は、コマンドライン(cscript)で25通りの入力を用意して確かめました。
| 入力 | 結果 |
|---|---|
| 引数が0個・2個・4個 | 使い方を表示して停止 |
| .aepx以外の入力、存在しない入力 | 出力せず停止 |
| 旧パスか新パスが空、2つが同じ、新しい素材が存在しない | 出力せず停止 |
| 出力先と同じ名前のファイルかフォルダーが既にある | 出力せず停止(既存の出力も変わらない) |
| XMLが壊れている、DTDを含む | 出力せず停止 |
| 旧パスが見つからない、文字どおりに一致しない(大文字と小文字の違い、単引用符で書かれた属性、属性名や等号まわりの書き方の違い) | 出力せず停止 |
| XMLのコメントの中にも同じfullpathの文字列がある | 出力せず停止 |
| 名前空間なし・既定の名前空間・接頭辞付きの名前空間のXML、After Effectsが保存した.aepx | 2件を置換して別名で出力 |
| 旧パスと新パスの両方に日本語と&を含む | 2件を置換して別名で出力 |
停止した場合は、どれも新しいファイルを作らず、元の.aepxは変わりませんでした。
確かめていないのは、.aiをレイヤー単位で読み込んだ素材、After Effectsのほかのバージョン、macOS、構成の違うPSD、新旧の素材の中身が違う場合、1秒の時点以外の表示です。
2026年10月3日に以前の版で行った14項目の検査は、記録を見つけられなかったため、今回の25通りと項目ごとに照合していません。
修正版VBScriptをダウンロードできます(2026年10月16日に差し替え)。
ZIPには、ほかの記事で使う練習用スクリプトと説明書き(README.txt)も入っていて、差し替えたのはrelink-copy.vbsだけです。
README.txtは2026年10月3日のままのため、relink-copy.vbsについて「実AEPXの再リンクは未検証」と書かれていますが、直した版は上のとおり確かめています。
確認資料(2026年10月3日):Adobe公式 XMLプロジェクト。
まとめ
- リンク切れは標準のフッテージ置換から確認し、XML編集は保存コピーで行う
- テキストエディタの検索・置換機能でフッテージパスを一括修正可能
- 記事のVBScriptは、完全一致するfullpathだけを書き換えた別名の.aepxを作る(2026年10月16日に名前空間付きの.aepxに対応)
- プロジェクトパネルで「見つけられない」を検索すればリンク切れ素材を即座に抽出可能
参考リンク:https://community.adobe.com/
よくある質問:After Effectsでリンク切れ素材のパスをまとめて直すとき
リンク切れ素材は、まず何を試しますか?
PSD・AIをレイヤー単位で読み込んだ素材も、まずAEのフッテージ置換で正しいファイルへ再リンクできるか確認します。それで対象を直せない場合に、保存コピーの.aepx内のパスを確認します。
リンク切れ素材を、すばやく見つけるには?
プロジェクトパネル上部の検索バーに「見つけられない」と入力して絞り込みます。リンク切れ素材をすぐに抽出できます。
.aepxとは、何ですか?
プロジェクトをテキスト形式(XML形式)で保存したファイルです。
「ファイル」→「別名で保存」→「XML 形式でコピーを保存」を選択して保存すると、拡張子が「.aepx」のファイルとして書き出されます。
.aepx内のパスを、どう編集しますか?
任意のテキストエディタで.aepxファイルを開き、検索機能でフッテージパスが記述されている箇所を特定して、置換機能で旧パスを新しい保存先パスに一括置換します。元の.aepと.aepxは保持し、編集した.aepxを別名保存してください。引用符や&などを含むパスは、XMLの属性値としてエスケープし、After Effectsで開いて各レイヤーのリンクを確認します。
置換するときの注意点は?
フォルダー名だけの部分一致や、全プロジェクトの文字列置換はしません。fileReferenceとfullpathを確認し、同じ旧ファイルを指す属性が何件あるか数えてから置換します。記事のVBScriptは、fullpath属性が完全一致する箇所だけを変更し、元ファイルを上書きしません。
VBScriptは、どんなときに保存しませんか?
引数なし、置換0件、XML不正、既存の出力ファイルがある場合は保存しません。旧パスが見つからないと出力せず停止するので、XML内の大小文字・引用符・パスを確認します。既存の出力があると停止するため、内容を確認せずに再実行して上書きしないでください。
.aepxから、通常の.aepに戻すには?
After Effectsで.aepxを開き、「ファイル」→「別名で保存」からファイル形式または拡張子を「aep」に変更して保存します。
ファイルサイズの大小だけでは復元成功を判断できないため、.aepとして保存して開き直し、コンポジション・素材参照・レイヤー・必要なフレームが正しいかを確認します。
この記事のスクリプトは、実機で確認済みですか?
2026年10月16日に、Windows 11 Pro(10.0.26200)のAdobe After Effects 26.5.0(Build 89、日本語表示)で、直した版を確かめました。
After Effectsが保存した.aepxで2レイヤーのPSDのパスを置換し、日本語と&を含む新しい場所のPSDを参照できること、開き直しと通常の.aepへの保存後も参照と表示が保たれることを確かめています。
停止する条件は25通りの入力で確かめ、どの場合も元の.aepxは変わりませんでした。
2026年10月16日より前に配布していた版は、After Effectsが保存した.aepxでは何も出力せずに止まっていました。
.aiのレイヤー、ほかのバージョン、macOSは確かめていないため、XMLとして正常でもAEでの再リンク成功を保証するものではありません。
失敗したら、編集前の.aepを開き、標準の置換操作へ戻ってください。
