删除 xlsm 文件上卡住的命名范围

删除 xlsm 文件上卡住的命名范围

我收到一个.xlsm有问题的文件。当我在 Excel 2010 中打开它时,它显示以下消息:

第一条消息

翻译过来就是:

Excel 在“Checklists.xlsm”中发现不可读的内容。是否要检索此工作簿的内容?如果您信任此工作簿的来源,请单击“是”。

当我单击“是”时,它显示以下内容:

第二条信息

翻译过来就是:

Excel 无法通过修复或删除无法读取的内容来打开该文件。

Excel 已完成文件级别的修复和验证。工作簿的某些部分可能已被修复或丢弃。

已删除的记录:来自 /xl/workbook.xml (工作簿) 的命名范围

于是我检查了文件中的每个命名范围,发现有一个范围缺失。于是我尝试重新创建它,结果收到以下消息:

第三条信息

您输入的名称无效。

可能的原因:

  • 名称以字母或下划线开头

  • 名称包含空格或其他无效字符

  • 该名称与 Excel 内部名称或工作簿中另一个对象的名称冲突。

由于该名称之前已创建,但现在我无法创建它,因此我假设它在文件内,但不知何故我无法访问它。我尝试使用 VBA 中的以下代码列出该锁定的命名范围:

Sub ShowNames()
    Dim n As Name
    For Each n In Application.ActiveWorkbook.Names
        MsgBox(n.Name)
    Next
End Sub

但它没有显示我之前输入的名称。所以我解压了文件并查看了grep -R thatNamedRange *内容。更正后的文件上没有显示任何内容,但旧文件上仍然显示。

所以我被困在这里,试图删除这个旧的命名范围以解决这个问题。我怎样才能删除文件内的这个旧的命名范围?

谢谢你!

答案1

嗯,事实证明这不是一个真正的答案,但我使用变通方法解决了这个问题,因为,我真的不知道为什么,我无法在名为查找表的工作表上的 D28:K28 上创建命名范围,但当命名范围以下划线开头时它就起作用了。_

如果有谁了解 Excel 内部原理并知道此原因,请告诉我!

相关内容