如何正确重命名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
是只读的。