Macro to Remove Hidden Names in Active Workbook


Because some macros and add-ins create hidden names on a sheet, links may exist even after you attempt to remove all known references (including objects and formulas) from a worksheet. In this situation, when you open a worksheet containing the hidden links, you may receive the following error message:
Update References to Unopened Documents
The macro in the "More Information" section of this article provides a macro to remove all the hidden names in a workbook.

More Information

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. The macro displays a message box that lists three items: (1) whether the defined name is visible or hidden, (2) the defined name, and (3) what that name refers to (the workbook cell reference). You may choose Yes or No to delete or to keep each defined name.

CAUTION: Removing names that contain links can eliminate errant links; however, doing so could affect the integrity of your data and return unexpected results. Microsoft recommends that you create a backup of your workbook before running this macro which may make changes to your data.

Visual Basic Code Example

   ' 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"
Vis = "Hidden"
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, _

' If the result is true, then delete the name.
If Result = vbYes Then xName.Delete

' Loop to the next name.
Next xName

End Sub
Note If your sheet names contain spaces, you may receive an error when you attempt to delete the defined name.


For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
188446 FIX: AFC Deadlock May Occur When Setting UIFrame's Cursor


Article ID: 119826 - Last Review: Jan 18, 2007 - Revision: 1