excel名称管理器显示隐藏
你想分别通过 VBA 和 VSTO(C#) 实现 隐藏 Excel 中名称管理器的名称(Name),这可以通过设置 .Visible = False
实现,下面我给出两种完整实现方式:
✅ 一、【VBA 实现】隐藏名称管理器中的名称
📌 1. 隐藏某个名称(Workbook级)
Sub HideName()Dim nm As NameOn Error Resume NextSet nm = ThisWorkbook.Names("你的名称") ' 替换为你要隐藏的名称If Not nm Is Nothing Thennm.Visible = FalseEnd If
End Sub
📌 2. 批量隐藏多个名称
Sub HideMultipleNames()Dim nameList As VariantDim nm As NameDim i As IntegernameList = Array("TaxRate", "InternalRange", "TempVar")For i = LBound(nameList) To UBound(nameList)On Error Resume NextSet nm = ThisWorkbook.Names(nameList(i))If Not nm Is Nothing Then nm.Visible = FalseNext i
End Sub
📌 3. 隐藏工作表级名称
Sub HideSheetLevelName()Dim ws As WorksheetSet ws = ThisWorkbook.Sheets("Sheet1") ' 替换为你的工作表名On Error Resume NextDim nm As NameSet nm = ws.Names("LocalName")If Not nm Is Nothing Then nm.Visible = False
End Sub
✅ 二、【VSTO 实现】隐藏名称管理器中的名称(C#)
确保你已在 VSTO 项目中添加了对 Microsoft.Office.Interop.Excel
的引用。
📌 1. 隐藏 Workbook 级名称(全局)
using Excel = Microsoft.Office.Interop.Excel;public void HideWorkbookLevelName(string name)
{Excel.Workbook wb = Globals.ThisAddIn.Application.ActiveWorkbook;try{Excel.Name nm = wb.Names.Item(name);nm.Visible = false;}catch{System.Diagnostics.Debug.WriteLine("名称不存在:" + name);}
}
📌 2. 隐藏 Worksheet 级名称(局部)
public void HideWorksheetLevelName(string sheetName, string name)
{Excel.Worksheet ws = Globals.ThisAddIn.Application.Worksheets[sheetName];try{Excel.Name nm = ws.Names.Item(name);nm.Visible = false;}catch{System.Diagnostics.Debug.WriteLine("工作表级名称不存在:" + name);}
}
📌 3. 批量隐藏多个名称(Workbook级)
public void HideMultipleNames()
{string[] namesToHide = { "TaxRate", "DebugRange", "TempValue" };var wb = Globals.ThisAddIn.Application.ActiveWorkbook;foreach (string name in namesToHide){try{var nm = wb.Names.Item(name);nm.Visible = false;}catch{System.Diagnostics.Debug.WriteLine($"名称不存在:{name}");}}
}
🔒 三、注意事项
事项 | VBA | VSTO |
---|---|---|
隐藏工作簿级名称 | ✅ | ✅ |
隐藏工作表级名称 | ✅ | ✅ |
恢复 .Visible = True | ✅ | ✅ |
名称仍然可用(只是不可见) | ✅ | ✅ |
必须保存为启用宏/加载项类型文件 | .xlsm | .vsto |
📎 四、隐藏后效果:
- 在“名称管理器”中看不到隐藏的名称;
- 在公式栏自动提示中不会列出;
- 但名称本身仍然有效,可以在公式中使用;
- 无权限保护效果,仅作“清爽隐藏”处理。