如何正确重命名ThisWorksheet的CodeModule

时间:2013-11-05 14:46:16

标签: excel excel-vba vbe vba

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

我用行

完成了这个
ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name = "wb"

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

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

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

enter image description here

有没有人见过这种行为 - 并且知道修复/解决方法?

1 个答案:

答案 0 :(得分:10)

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

详细答案

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

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

ThisWorkbook Name属性实际上未被修改

enter image description here

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

enter image description here

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


解决方法是使用属性窗口将<{1}}重命名为ThisWorkbook

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