Excel: 予約されている「範囲名」

Excel には、任意のセル範囲に名前をつけて登録する機能がある。セル参照の「お気に入り」、みたいなものだけど、他からそのセルを参照するときに使うこともできる。
問題は、同じファイルを何度も編集している場合。例えば、古いファイルの内容を削って新しい書類のテンプレートを作るとか、さらにそれを集めてひとつのファイルにまとめたり、なんてことを繰り返していると、もう使っていない範囲名が、ファイルの中にゴミとしてたまっていく。
特に、外部ファイルへのセル参照に範囲名をつけて登録している場合、その範囲名を利用していなくても、ファイルを保存するときに「このファイルは存在しないファイルを参照しています」と警告が表示されてしまう。

削除するには

手動でやる場合は、こんな感じ。

  1. ファイル内の各シートを開く
  2. メニューの [挿入]→[名前]→[定義] を選ぶ
  3. 定義されている範囲名の一覧が表示されるので、ひとつずつ削除する

すべて削除してよければ、VBA でこんな感じ (予約された範囲名も削除してしまうので注意)。

For Each Name In ThisWorkbook.Names
    Name.Delete
Next

ただし、これだと削除できない場合もあるみたい。
例えば "A1" のように、通常のセル参照と同じに見える文字列は、範囲名としては使えないはず、なんだけど、どういうわけか範囲名として定義されているファイルを見たことがある。他にも、理由はよくわからないけど削除できない範囲名があるようで。そういう場合、Delete しようとすると

その名前は正しくありません。

というエラーが起きる。手動では削除できるんだけど。

予約された範囲名

Excel で「印刷範囲の設定」を行うと、そのセル参照が Print_Area という名前で登録される。そういう「Excel が特別に扱う範囲名」がいくつかあるらしい。
が、まとまった資料が見つからない。唯一日本語で見つけられたのは、コラムの囲み記事。

・Database : データベース範囲を指定する
・Criteria : 検索条件範囲を指定する
・Extract : 抽出先セル範囲を指定する
・Print_Area : 印刷範囲を指定する
・Print_Titles : 印刷時の行/列タイトルを指定する
・Recorder : Excel 4.0 マクロを記録する、マクロシートの範囲を指定する

Mactopia Japan - Excel Solution #02

とりあえず Print_Area と Print_Titles は、定義されているセル参照を確認してから削除した方がよさそうだ。