dポイントプレゼントキャンペーン実施中!

VBA初心者です。
2種類のブックで、片方のシートを他方にコピーするマクロで自動化していますが、その際途中で「名前’ ’は既に存在します」が出てきて、都度「はい」をクリックして進めています。
「参照できない名前の定義」があるためにその表示が出るのだとは理解しており、その対策として、事前に手作業でメニューの「数式」-「名前の管理」で表示される全件を削除した後に、マクロを実行しています。

その「参照できない名前の定義」を削除することを上記の一連のマクロに入れて行えないものかと、検索したところ、非表示のものを含め全ての名前を表示するサンプルVBAは確認できましたが、どれも削除するには「手作業」にならざるをえないように思います。(探し方が甘いのかもしれませんが・・・)

2種類のブックは他の人が作成したファイルで、「参照できない名前の定義」を20個ほど含んでおり、全て削除しても差し支えないものです。

「参照できない名前の定義」を表示し、全て削除するVBAはどのように記述すればいいのでしょうか。
もちろん、表示せずに削除でもいいのです。
Win10。 Excelは、「Microsoft 365」です。

ご教示いただきたく、よろしくお願いいたします。

A 回答 (2件)

No.1です。


アラートを抑止した訳ではありません。名前を削除しています。
今までアラートが出ていたということは、そのマクロの中で名前を追加しているのですよね?
一旦、消してから再作成しているのであれば、最終的に名前の定義が有るのが正解なのではないでしょうか?

ちなみに、アラートを抑止する方法もありますので調べてみて下さい。
アラート抑止の方が、他への影響が少なくて良いような気がします!!
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
ブック単体でSampleマクロを実行すると、確かにおっしゃる通り、名前が削除されていました。
2種類のブックでシートのコピーを行い、他の様々な一連のマクロでの作業後に出来上がった別名のブックを確認すると、やはり名前の定義がありました。
但し、マクロの作業に入る前の定義とは違ったもの(範囲)が定義されているようで、自分では意識していないうちに作業中に名前の定義がされているのですね。

アラートの抑止(確認メッセージを非表示)については、調べてみます。

ありがとうございました。

お礼日時:2020/10/03 17:20

365で動くかは試していませんが、こんな感じでイケると思いおます。



Sub sample()
Dim n As Name
For Each n In Names
n.Delete
Next n
End Sub
    • good
    • 0
この回答へのお礼

ママチャリさん
早速のご回答ありがとうございます。

ご教示いただいたものを、一連のマクロの先頭に組み込み実行しましたら、「名前’ ’は既に存在します・・・」が表示されなくなり、最後まで進みました。
但し、出来上がったブックを「名前の管理」で確認すると、「名前」は残ったままでしたので、名前を削除したのではなく「名前’ ’は既に存在します・・・」の表示を出さなくしたものでしょうか?
ちょっと不思議に思いましたもので。

いずれにしても、うまくいきました。
いつもありがとうございます。

お礼日時:2020/10/03 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!