苛立たしいダイアログのループExcelにおいて、消しても消しても出てくるダイアログボックスほど厄介なものはありません。シートを右クリックして移動またはコピーしようとした瞬間、罠にはまります。名前の競合を解消するために「はい」をクリックしても、またすぐに表示されます。何度も、何度も。たった1回のコピー操作を完了させるために、50回も60回も「はい」をクリックしなければならないこともあります。
The name 'PrintArea' already exists. Click Yes to use that version of the name, or click No to rename the version of the 'PrintArea' you're moving or copying.
このループは通常、Print_Titles、Criteria、_FilterDatabase といった名前で発生します。1つ名前を変更したとしても、Excelはメタデータ内に隠された別の名前を次々と見つけ出します。
問題の根本的な原因この競合は、コピー元のシートとコピー先のブックが同じ**名前定義(Named Ranges)**を共有しているために起こります。シートを移動する際、Excelはそのシートに関連するすべての設定(いわば「荷物」)を一緒に持っていこうとします。移動先にすでに「Print_Area」のようなグローバルな名前が存在する場合、Excelはどちらの定義を優先すべきか判断できなくなります。
さらに厄介なのは、これらの名前の多くが「不可視」であることです。これらは、以前のマクロやBloomberg、Solverといったサードパーティ製のプラグイン、あるいは古い .xls ファイルによって生成された「ゴースト」の名前です。非表示になっているため、標準のリストには表示されず、手動で削除することは不可能です。
方法1:手動でのクイックチェックコードを使う前に、名前定義が単に設定の奥深くに埋もれていないか確認しましょう。これは、以前のユーザーが手動で名前定義を作成していた場合に有効です。
- コピー元のブックを開きます。- 数式タブに移動し、名前の管理をクリックします(または
Ctrl + F3を押します)。- 「参照範囲」列に#REF!エラーが含まれている名前を探します。- これらの破損した、あるいは競合している名前を選択し、削除をクリックします。名前の管理が空に見えるのにエラーが解消されない場合、その名前は非表示になっています。その場合は、方法2で強制的に表示させる必要があります。
方法2:VBAで非表示の名前をクリーンアップする(プロの方法)VBAは、これらのプロンプトを停止させる最も確実な方法です。これらのスクリプトは、Excelのインターフェースが無視する非表示のプロパティをターゲットにします。
オプションA:まず、すべてを表示する削除する前に名前を確認したい場合は、このコードを使用してください。ファイル内のすべての名前の「可視」スイッチをオンにします。
Sub UnhideAllNames()
Dim xName As Name
For Each xName In ActiveWorkbook.Names
xName.Visible = True
Next xName
MsgBox "名前の管理を確認してください。すべての非表示の名前が表示されました。"
End Sub
オプションB:「核」クリーンアップ(一括削除)単にエラーを止めたいだけなら、このスクリプトを使用してください。すべての非表示の名前と、#REF! エラーを含む名前を自動的に一掃します。
Sub CleanUpNames()
Dim xName As Name
Dim xCount As Long
On Error Resume Next
For Each xName In ActiveWorkbook.Names
' 非表示の名前、または #REF! エラーを含む名前を削除
If Not xName.Visible Or InStr(1, xName.Value, "#REF!") > 0 Then
xName.Delete
xCount = xCount + 1
End If
Next xName
MsgBox xCount & " 個のゴースト名が正常に削除されました。", vbInformation
End Sub
修正を適用する方法:- Alt + F11 を押してVBAエディタを開きます。- 上部メニューで 挿入 > 標準モジュール をクリックします。- 開いたウィンドウに選択したスクリプトを貼り付けます。- F5 キーを押してすぐに実行します。## 方法3:PrintAreaの競合を回避するエラーが特に PrintArea に言及している場合、両方のブックに厳密なページ設定がなされていることが原因であることが多いです。移動前に印刷設定を解除することで、チェックをバイパスできる場合があります。
- コピー元のシートで、ページ レイアウトタブに移動します。- プリントエリアをクリックし、プリントエリアのクリアを選択します。- 再度、移動またはコピー操作を試してください。競合の原因となっていた特定のメタデータが削除されたため、通常はこれで解決します。## 修正の確認方法クリーンアップを実行したら、名前の管理(
Ctrl + F3)を開きます。リストが空であるか、日常的に使用している範囲のみが表示されているはずです。もう一度シートのコピーを試してください。ポップアップが一度も出ずに即座に移動できれば、キャッシュのクリアは成功です。

