如何正确重命名ThisWorksheet的CodeModule

我正在尝试使用VBA扩展性来重命名Excel工作表的ThisWorkbook代码模块。

我用这条线完成了这个

 ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name = "wb" 

我可以在VB编辑器中看到更改,还可以访问工作簿的属性,例如Debug.? wb.Name Debug.? wb.Name

但是:如果我保存并closures文件,然后重新打开它,我会得到奇怪的行为。 如果代码模块在重命名之前为空,它将恢复为旧的空ThisWorkbook名称。

如果它不是空的,或者在保存之前填充,我现在同时拥有一个空的ThisWorkbook模块(如果有的话会触发事件) – 填充的wb模块 – 不会触发工作簿事件:

在这里输入图像说明

有没有人看到这种行为 – 并知道修复/解决方法?

快速回答: ThisWorkbook.[_CodeName] = "newName"

详细的答案

当我添加对Microsoft Visual Basic For Applications Extensibility 5.3引用并运行您的行

 ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name = "wb" 

ThisWorkbook名称属性实际上未被修改

在这里输入图像说明

保存并重新打开该文件会导致ThisWorkbook对象的重复

在这里输入图像说明

这几乎意味着现在我有一个工作簿中的两个Workbook对象,都命名为ThisWorkbook


解决方法是使用“ 属性”窗口或将“ ThisWorkbook重命名为wb

ThisWorkbook.[_CodeName] = "newName"因为ThisWorkbook.CodeName是只读的。