Excel对象中Code name与工作表重名报Invalid property value如何解决
报错原因与解决方案
你遇到的「Invalid property value」报错基本来自两个常见原因,对应解决方法如下:
- 名称不合规:VBA的对象标识符(也就是codename)不允许包含空格、中文标点、特殊符号,不能以数字开头,也不能和
Range、Sheet这类VBA内置关键字重名。如果你的工作表名称有上述非法字符,自然无法直接设置成同名。
解决方法:先把工作表名称里的空格、特殊符号替换为下划线,数字开头的名称前面加下划线,确认没有和内置关键字重名后再设置codename。 - 重名冲突:如果你的VBA工程里已经存在同名的模块、类模块、用户窗体或其他工作表codename,就会触发重名报错。
解决方法:按Alt+F11打开VBA编辑器,在左侧工程资源管理器中排查所有对象、模块的名称,把冲突的项目改名后再操作。
如果需要批量同步所有工作表的名称和codename,可以使用下面的代码:
Sub 同步工作表Codename与表名() Dim ws As Worksheet Dim 合规名称 As String For Each ws In ThisWorkbook.Worksheets ' 替换表名中的非法字符 合规名称 = Replace(Replace(Replace(ws.Name, " ", "_"), "-", "_"), ".", "_") ' 处理数字开头的情况 If IsNumeric(Left(合规名称, 1)) Then 合规名称 = "_" & 合规名称 ' 修改codename ThisWorkbook.VBProject.VBComponents(ws.CodeName).Name = 合规名称 ' 若需要同时把表名改为合规后的名称,取消下一行注释即可 ' ws.Name = 合规名称 Next ws End Sub
运行前需要先开启权限:进入Excel选项→信任中心→信任中心设置→宏设置→勾选「信任对VBA工程对象模型的访问」,运行完成后可关闭该选项。
内容的提问来源于stack exchange,提问作者user137684
相关产品推荐
相关产品推荐

