使用 Excel VBA 损坏文件删除命名范围
Posted
技术标签:
【中文标题】使用 Excel VBA 损坏文件删除命名范围【英文标题】:Deleting Named Ranges with Excel VBA Corrupting File 【发布时间】:2020-03-04 16:14:29 【问题描述】:我遇到的情况是,只要我运行以下代码行,我的文件就会在关闭并重新打开时损坏。
Dim MyName As Name
For Each MyName In Names
ActiveWorkbook.Names(MyName.Name).Delete
Next
我也试过用下面的代码替换上面的代码,得到了同样的效果:
Do While CBool(ActiveWorkbook.Names.Count)
ActiveWorkbook.Names(1).Delete
Loop
重新打开文件时的错误如下: “我们发现 '文件 X.xlsm' 中的某些内容存在问题。您希望我们尽可能多地恢复吗?如果您信任此工作簿的来源,请单击“是”。
在此之后,文件通过“修复或删除不可读的内容”来修复文件,并显示消息“已删除功能:来自 /xl/worksheets/sheet7.xml 部分的外部数据范围”
有什么想法吗?我很高兴我能够隔离导致问题的代码,但我不知所措。我正在使用 Excel for Office 365 MSO 32 位。
【问题讨论】:
听起来您的工作簿中有一个外部数据查询,这将创建一个隐藏名称。顺便说一句,将使用 2007 年或更高版本引入的任何功能,所以我建议您的代码需要调整以处理此类事情。 【参考方案1】:您没有定义Names
所属的集合。尝试修改以定义名称集合。
Dim MyName As Name
For Each MyName In ActiveWorkbook.Names
MyName.Delete
Next
【讨论】:
以上是关于使用 Excel VBA 损坏文件删除命名范围的主要内容,如果未能解决你的问题,请参考以下文章