通过VBA代码重命名工作表代码名称(不通过属性)

我有一个受保护的工作簿A,用户不允许用户复制另一个工作簿B的工作表。在工作簿AI中,考虑工作表1-19(现在只有13个工作表,我允许19个用于未来扩展工作簿)作为“系统表”,不能删除或修改。 表20-30是“非系统表”,用户可以根据需要进行删除和修改。

我期待有一个导入function,用户可以将包含1张工作簿的工作簿B导入工作簿A.工作簿A将检查当前存在多less“非系统工作表”,并在最后插入新工作表张数是20+。 例如:

Total sheets in workbook A = 18 Total "system sheets" in A = 13 (sheet 1-sheet 13) Total "non system sheets" in A = 5 (sheet 20-sheet 24) 

如果我要导入新的工作表A,则将其分配为工作表25

我想要VBA更改代码名称(工作表编号)而不是工作表的名称。

我尝试过寻找方法,有人可以请指出我正确的方向如何做到这一点? 谢谢!

在Excel对象模型中,Worksheet有两个不同的名称属性:

Worksheet.Name Worksheet.CodeName

Name属性是可读/写的,并且包含出现在工作表选项卡上的名称。 用户和VBA是可以改变的

CodeName属性是只读的

您可以引用特定工作表作为工作表(“数据”)。范围(“A1”)其中数据是.Name属性或作为Sheet1.Range(“A1”)其中Sheet1是工作表的代号。

编辑:您可以通过访问VBA项目模型组件扩展性来更改CodeName属性。

 ThisWorkbook.VBProject.VBComponents(Sheets("Sheetname").CodeName).Name = "Sheet" & Workbook.Sheets.Count 

只要确保有编程访问Visual Basic项目。

文件 – >选项 – >信任中心 – >信任中心build立 – >macros设置 – >信任访问VBA项目对象模型。