名前定義。これですな、ずうっと気付かれずにいること、多いんですわ。処理自体に影響がない場合が大体ですので。で、要らんもんをくっつけたままコピーされたりメールされたり転用されたりして、増殖してゆくんですよ。これ、ウィルスじゃあないんですけど、「感染している」て表現していいと思います。
(ex. 関わったことのある職場 (複数件) では、長年の「やりっぱなし」が積もりに積もり重なって、おびただしい感染量に。もちろんその感染、自社内にとどまらず、ですわ。そしてその現状が、誰にも認識されておらん。セル参照先を見てみると、意図して定義してあるとは思えぬものばかり。それ以前に大体は参照エラーになっています。)
[放っておくとどんな害がある ?]
放置でも処理に実害はないです。あるとすれば…
・シートをコピーして増やそうと思った時に繰り返し「名前を使用しますか?」的なことを聞かれて「はい」で答えまくらなければならぬハメになったり。
・保存時に「有効な参照範囲と競合する名前がある」旨のウォーニングが表示されたり。
・しかし何より、セキュリティ (情報漏洩) の観点から、見過ごせぬ問題です。セル参照先が見せてはならぬトコになっちゃってるかもしれませんからね。
[注意事項]
なにもマクロ使わなくても削除できるのでは、と思うカタも おられよう。しかし注意。
「数式」タブ⇒「名前の管理」画面に表示されないもの (「Visible:=False」指定のもの) は「名前の管理」画面から削除ができません。そういったものは、ツール(マクロ)を作成しての削除とならざるを得ません。
※ 「Print_Titles」のような必要な名前まで消してしまわぬよう要注意。
[というわけで、実際の、マクロ (現物)。]
(以下を貼って ご使用ください。)
↓↓↓↓↓
'名前定義を一括削除するマクロ
'ファイルのバックアップを取った上で使用してください。
'下記の例では、「Print_Titles」(印刷時の行見出し・列見出しの設定)は残します。
'それ以外は削除するか見送るかを個別に判断してください。
'(「FilterDatabase」(オートフィルタの設定)、「Print_Area」(印刷範囲の設定)、など、
'場合によっては必要な名前定義もあります(一概に判断できない))。
Sub delName()
Dim obj As VariantEnd Sub
Dim tmp As String
Dim msgTxt As String
Dim cnt_Y
Dim cnt_N
Dim cnt_S
cnt_Y = 0
cnt_N = 0
cnt_S = 0
Call WriteLog(ActiveWorkbook.Name & " 名前定義を一括削除、Start !!")
For Each obj In ActiveWorkbook.Names
tmp = obj.NameNext
If InStr(tmp, "Print_Titles") = 0 Then
Select Case MsgBox(tmp & " を削除します。", vbYesNoCancel)Else
Case vbYesEnd Select
obj.DeleteCase vbNo
cnt_Y = cnt_Y + 1
msgTxt = tmp & " が削除されました。"
cnt_N = cnt_N + 1Case vbCancel
msgTxt = tmp & " の削除は見送られました。"
msgTxt = tmp & " 以降、処理を中断しました。"
Call WriteLog(msgTxt)
Exit For
Call WriteLog(msgTxt)
MsgBox tmp & " をスキップします。"End If
cnt_S = cnt_S + 1
Call WriteLog(tmp & " はスキップされました。")
msgTxt = ActiveWorkbook.Name & " において、" _
& vbCrLf & cnt_Y & "件の名前定義が削除されました。" _
& vbCrLf & cnt_N & "件の名前定義の削除が見送られました。" _
& vbCrLf & cnt_S & "件の名前定義がスキップされました。"
MsgBox msgTxt
Call WriteLog(msgTxt)
'
'ログを残す。
Sub WriteLog(str As String)
Open ThisWorkbook.Path & "\log.txt" For Append As #1End Sub
Print #1, str & vbCrLf
Close #1
[前回の日記。]
↓
[ブック内の名前定義を検出するExcel VBAマクロ (不要と思われるセル参照の検出)]
[関連する日記。]
↓
[テーマ「コンピュータ」のブログ記事一覧]
[解説・使用例など。]
↓
「Excel VBA] 99. 「VBA実例集エクセル」 (更新・追加、随時ばんばん入っています)。

about me
--------
hinden Takahashi, Hideki
ひんでん 高橋 秀樹
http://hinden.at.webry.info/200002/article_1.html
[events]
イベント情報一覧
http://www2u.biglobe.ne.jp/~hinden/live/
ラベル:コンピュータ
【関連する記事】
- 楽器のほうのキーボードを壊した ともみち くん。今度は、パソコンのほうのキーボー..
- 外付けハードディスク、全損。
- Q : ブラウザの起動ページが勝手に変えられてしまっていて、しかも通常の直し方で..
- 修理され戻ってきました、ディスプレイ一体型パソコン。以降、パソコン複数台を縦横無..
- そして、つなぎのノーパソ。なんと、これが素晴らしく具合よくて、ああ幸せ。(のろけ..
- 祝。ミッション、完遂。快適なパソコン環境を提供。([長女の一人暮らしが始まる] ..
- ノートパソコン、自力で直しました。
- Javaを身につけたいならココ、サーチマンさんのサイトが最適。(無料)
- この「FC2ホームページ」の障害はやっぱりどうにもならんものかな。無理か、無料版..
- 前のパソコンは、買取査定で大した額になりませんでした。w
- パソコン買い替え時の初期セットアップ手順を最新化しました。(自分用に特化した手順..
- [自分用メモ] CSV化する際には、BOM付きUTF-8にしておくべし。
- 直りました。「まほまほファミリー」のメールフォームからのメールが文字化けする障害..
- [Excel VBA] 外部テキストの文字列を一斉置換する関数。(UTF-8 ア..
- 「Ma_ho_Ma_ho_Family」のサイト。全ファイルの文字コードを一斉に..
- 「Ma_ho_Ma_ho_Family」のサイト、一斉にページ更新しました。(V..
- [Excel VBA] 表記ゆれを統一。英数字・記号はすべて半角に、カタカナは全..
- [自分用memo] 画像URLの一覧から随時サムネイルをセルに貼ってゆく、という..
- [誰か教えて] [Excel VBA] ネット上の画像が縦長なのか横長なのかを知..
- そういう仕様なの ? Google フォト。