ブックの検査で 「非表示の名前」 が削除できない
Excelを他会社などに共有する際に、ブックの検査を使って
社外に漏れたらダメな情報などがないかチェックする機能があります。
検査を実行後、「ドキュメントのプロパティと個人情報」などいくつかの項目は削除できますが、「非表示の名前」などいくつかの項目は自動的に削除できません。
非表示の名前が見つかりました。非表示の名前は自動的に削除することはできません。手動で削除してからもう一度ファイルを検査してください。
と表示され、「詳細情報」ボタンが表示されるだけ。。。
2019年6月23日時点で推奨される解決策にある
作業中のブックで非表示に名前を削除するマクロ
を参照しようとしても404エラーが表示されます。どうしろと。。。
名前の管理
「非表示の名前」は名前の管理で確認できるはずだが・・・
「非表示の名前」は本来、名前の管理で保存されているデータなので
「数式」タブにある定義された名前をクリック
↓
名前の管理
より表示できるはずなのですが、非表示扱いのため、表示がされません。
非表示の名前を表示させる
やっと本題
「名前の管理」に表示されていない名前を表示させるにはマクロを使って表示させるしか方法がないようなので表示させることにします。
マクロエディタの表示
Excel画面にて、[alt]と[F11]を同時に押下すると
Microsoft Visual Basic for Applicationsが表示されます。
Module(コードエディタ)の表示
[Alt]⇒[i]⇒[m]の順にキーを押下するとModule(コードエディタ)が表示されます。
コードの記述
Module1に下記コードを記述します。
関数名はお好みで
Public Sub VisibleNames()
Dim name As Object
For Each name In Names
If name.Visible = False Then
name.Visible = True
End If
Next
MsgBox "すべての名前の定義を表示しました。", vbOKOnly
End Sub
[Excel] シートで非表示になっている名前の定義を消す方法
より。
コードの実行
Microsoft Visual Basic for Applications の上部タブにある再生(▶)ボタンまたは[F5]ボタン押下よりマクロを実行します。
実行後「すべての名前の定義を表示しました。」と表示されればOKです。
[名前の管理]の確認
再度名前の管理を確認すると非表示となっていた名前が表示されるようになっているかと思います。
※名前の管理の表示方法はこちらより
あとは不要な名前情報を消していくだけです。
xlsxだとそのまま保存するとマクロ消してくれる
本来ならば今回削除したマクロを消す必要がありますが、保存形式がxlsxの場合自動的にマクロが、保存する際に
「次の機能はマクロなしのブックに保存できません」
と表示されます。
この警告画面にて「はい」を選択するとマクロ削除して保存してくれるので便利です。
雑感
昔から使っているxlsxだと名前の管理が残っている場合が多いような気がします。
印刷範囲が非表示扱いで保存されているせいだったり、語り継がれたシートだったために「あああ」とか「aaa」とかの名前が多数残ってたりします。
ブックの検査は昔からありますが、社外に提出する際は実行したほうがいいです。
ワークシートの非表示とか検出してくれるので便利です。
名前の管理で保管されている情報はクリティカルなセキュリティ事故にはならないことが多いと思いますが、何かあった際の情報は最小限にするためにも削除したほうがいいですね。