久々Excelの困った所。

やっと解決したのでご報告。大きなエクセルを扱っていると、 シートコピーをする際に以下のメッセージが表示されて、何度も「はい」をクリックしなければならない場合があります。

移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’AAAA’が含まれています。この名前を使用しますか?

思いっきりハマりましたが、そしてWEB上には色々情報有りますが、幾つか問題が出たので、まとめて解決。Macの場合は更に厄介で、名前の管理がいまいち使えません。。。(ので、手動で名前を消しまくる、という途方もない作業に、、、。VBAで解決しましたが、どちらにしても相当時間かかりました。。。)
手順としては1.非表示の名前まで表示させる。2.VBAで全部消す。という形です。

表示させる部分はこちらを参照。中のコードで使う部分は下記の通り。(Macroの名前を日本語にすると不具合出る場合があるので、その部分のみ、変更済み)

Sub showname()
    Dim name As Object

    For Each name In Names
        If name.Visible = False Then
            name.Visible = True
        End If
    Next
End Sub

なお、Macroの追加がわからない場合は(モジュールの追加がMacには見つからない)なんでも良いので、記録マクロをつくって、すぐに記録終了→VBエディタで上記をコピペ。です。

次は名前の定義の削除を一括で。色々見ましたが、多分下記が汎用性高く良さそう。こちらより引用

Sub DeleteDefinedNames()
 
    Dim n As Name
    For Each n In ActiveWorkbook.Names
        On Error Resume Next  ' エラーを無視。
        n.Delete
    Next
 
End Sub

コレでなんとか、シートを自由にいじれるようになりましたとさ。困ったのはステップ2の待ち時間。1000とか名前がついていると、まあ、結構待ちます。10-15分とか。待ちきれず、何度もキャンセルしてしまった。。。気長に待ってください。