Excel VBA,从工作簿中删除所有名称没有循环

我试图删除使用VBA而不使用循环的Excel工作簿中的所有名称。

我目前正在使用下面的代码,但是这是非常缓慢的,因为工作簿中有几千个名字。

任何build议,将不胜感激!

Sub deleteAllNames() Dim xName As Name For Each xName In Application.ActiveWorkbook.Names xName.Delete Next End Sub 

不可能没有一些复杂的hacky方式或混乱的XML,但这应该是更快:

 Dim i As Long Application.Calculation = xlCalculationManual For i = ThisWorkbook.Names.Count To 1 Step -1 ThisWorkbook.Names(i).Delete Next Application.Calculation = xlCalculationAutomatic 

我有同样的问题删除所有命名的范围,代码运行非常缓慢。 您可以通过在循环运行时closures屏幕更新和计算来解决这个问题。

 Sub deleteAllNames() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Dim xName As Name For Each xName In Application.ActiveWorkbook.Names xName.Delete Next Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub