我收到一个.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 内部原理并知道此原因,请告诉我!