Excelで非表示の名前が検出された場合の対処法

プログラミング

Excelで仕事する人の宿命ですが、お客さんに納品する前には必ず隠された情報が無いか探す作業が発生します。

非表示の名前が1つや2つであれば手動で消すことも容易ですが、負の遺産が積み上がったExcelでは中々時間が取られる作業です。

しかも厄介なことにVBAを使わなければ見つけられない名前もあるので、完全に消すにはVBAに頼るしかありません。(というか、どうやってVBAでしか見れない所に名前仕込んでるの??)

さて早速、非表示の名前を削除するVBAです。

' Module to remove all hidden names on active workbook 
   Sub Remove_Hidden_Names() 
       ' Dimension variables. 
       Dim xName As Variant 
       Dim Result As Variant 
       Dim Vis As Variant 
       ' Loop once for each name in the workbook. 
       For Each xName In ActiveWorkbook.Names 
           'If a name is not visible (it is hidden)... 
           If xName.Visible = True Then 
               Vis = "Visible" 
           Else 
               Vis = "Hidden" 
               Debug.Print xName.Name & "," & xName.RefersTo 
               xName.Delete 
           End If 
           ' ...ask whether or not to delete the name. 
           'Result = MsgBox(prompt:="Delete " & Vis & " Name " & _ 
           '    Chr(10) & xName.Name & "?" & Chr(10) & _ 
           '    "Which refers to: " & Chr(10) & xName.RefersTo, _ 
           '    Buttons:=vbYesNo) 
           ' If the result is true, then delete the name. 
           'If Result = vbYes Then xName.Delete 
           ' Loop to the next name. 
       Next xName 
   End Sub

コメントアウトしている所を元に戻すと名前ごとに削除するかどうか確認するプロンプトが表示されます。

自分のプロジェクトでは非表示の名前を設定してないというのであれば確認するまでもなく全削除で良いかと思います。

私も最初は1つずつ確認していましたが、途中から確認プロンプトの部分をコメントアウトしました。

参考

非表示の名前が検出されました
https://support.microsoft.com/ja-jp/office/%e9%9d%9e%e8%a1%a8%e7%a4%ba%e3%81%ae%e5%90%8d%e5%89%8d%e3%81%8c%e6%a4%9c%e5%87%ba%e3%81%95%e3%82%8c%e3%81%be%e3%81%97%e3%81%9f-7934441b-9eda-4d6c-bd46-a11a2e148e7b?ui=ja-jp&rs=ja-jp&ad=jp