エクセル内に定義された名前の重複を解決するマクロ
やりたいこと
以下ダイアログメッセージの連発を叩きのめす。
移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前 'foo' が含まれています。 この名前を使用しますか?
- コピーまたは移動先のシートに定義されている名前を使用する場合は、[はい]をクリックします。
- 数式またはワークシートで参照する範囲の名前を変更する場合は、[いいえ]をクリックし、[名前の重複] ダイアログボックスに新しい名前を入力します。
先にデメリット
すべて消えます。
この方法は定義された名前をすべて削除します。
そのため、セルに名前を付けているとすべて消えます。
対象としてはまっさらにする時の用途なのでご注意ください。
たまに復活します。
古い形式(.xls)など、削除したはずが謎のタイミングで復活する場合もあります。
そうなると諦めて新しいファイルに書式などを丁寧にコピーするしかないです多分。
やること
開発」タブを表示するようにする。
(ファイル→オプション→リボンのユーザー設定)
「開発」タブの「マクロの記録」をクリック、OKをで初期表示の名前で記録開始。
「開発」タブの「記録終了」をクリック
「開発」タブの「マクロ」をクリック
マクロの記録で付けた名前を選択して、「編集(E)」をクリック
以下のような状態になっていると思います。
Option Explicit Sub Macro1() ' ' Macro1 Macro ' ' End Sub
全部消して以下をコピペする
Option Explicit Sub Macro1() ' ' Macro1 Macro ' Dim n As Name Dim s As Worksheet ' ブックの範囲の名前を削除 For Each n In ThisWorkbook.Names n.Delete Next ' シートの範囲の名前を削除 For Each s In ThisWorkbook.Worksheets For Each n In s.Names n.Delete Next Next msgbox "あいつはもう消した!" ' End Sub
F5キーを押す
メッセージが出たら終わり。
以上!