« [ASP.NET] ValidatorをJavascriptから呼び出す方法 | メイン | [ActiveReports] 環境によって余白やページサイズが変わるのを防ぐには »

2012年1月10日 (火)

[VBA]定義された名前を削除する

何度も使いまわされたExcelファイルには結構ゴミ(既に意味のない定義された名前)がついてることが多々ある。
名前が定義されていると、ファイルサイズが大きくなったり、
前に使っていた人が無意識にサーバ名とか顧客のフォルダ名を登録しててそのままだったりする
(セキュリティ的にもどうなの、、、)
ので、気付いたら消すようにしている。


通常は、

数式>名前の管理
で、不要の名前を選択して削除
(Excel2010)

挿入>名前>定義
で、不要の名前を選択して削除
(Excel2003)

でうまくいくんだけど、Excel2010では
名前リストを全削除したのに、保存時の互換性チェックで

「このブックのいくつかの数式は、現在閉じている他のブックにリンクされています。
 以前のバージョンの Excel では、リンク先のブックを開いていないときにこれらの数式を再計算すると、255 文字を超える部分は返されません。
場所:定義された名前」

というメッセージが表示されてしまう。

そこでVBAに以下のコードを書き込んで実行し、名前を全部消してしまうことにした。
-------------------------------------------------
Sub ClearAllNames()

    Dim objName As Name

    For Each objName In ActiveWorkbook.Names
        objName.Delete
    Next objName

End Sub
-------------------------------------------------

上のコードを実行してから保存すると、上記のメッセージはでなくなった。
実行して、名前の定義が消えていることを確認したら、VBAに追加したコードは削除しておこうね。(そのコードが次にゴミになったりいらんことをしたりするので・・・

トラックバック

このページのトラックバックURL:
http://app.blog.eonet.jp/t/trackback/349283/27749904

[VBA]定義された名前を削除するを参照しているブログ:

コメント

コメントを投稿

フォトアルバム

My Photostream

  • Flickrにアップしてる写真の一部です。
    www.flickr.com
    This is a Flickr badge showing public photos and videos from micek_flicek. Make your own badge here.

クリック募金

  • クリックで救える命がある。
Powered by Six Apart