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

我用这条线完成了

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


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

但是:如果保存并关闭文件,然后重新打开它,则会出现奇怪的现象。如果代码模块在重命名之前为空,它将恢复为旧的空ThisWorkbook名称。

如果它不为空或在保存之前已填充,则现在我都有一个空的ThisWorkbook模块(如果有的话将触发事件)和已填充的wb模块-不会触发工作簿事件:



有没有人看到过这种行为-并且知道解决方法/解决方法?

最佳答案

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

详细答案

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

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


ThisWorkbook Name属性实际上并未被修改



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



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



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

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

09-25 17:44