我正在尝试使用VBA扩展性重命名Excel工作表的ThisWorkbook
代码模块。
我用行
完成了这个ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name = "wb"
我可以在VB编辑器中看到更改,也可以访问工作簿的属性,例如Debug.? wb.Name
。
但是:如果我保存并关闭文件然后重新打开它,我就会出现奇怪的行为。如果代码模块在重命名之前为空,则会恢复为旧的空ThisWorkbook
名称。
如果它不是空的或者在保存之前填充,我现在有两个,一个空的ThisWorkbook
模块(如果有的话会触发事件) - 和填充的wb
模块 - 不会解雇工作簿事件:
有没有人见过这种行为 - 并且知道修复/解决方法?
答案 0 :(得分:10)
快速回答: ThisWorkbook.[_CodeName] = "newName"
详细答案
当我添加对Microsoft Visual Basic For Applications Extensibility 5.3
的引用并运行您的行
ThisWorkbook.VBProject.VBComponents("ThisWorkbook").Name = "wb"
ThisWorkbook
Name属性实际上未被修改
保存并重新打开文件会导致重复ThisWorkbook
对象
这几乎意味着现在我在一个工作簿中有两个Workbook
个对象,并且两个都被命名为ThisWorkbook
解决方法是使用属性窗口将<{1}}重命名为ThisWorkbook
或
wb
因为ThisWorkbook.[_CodeName] = "newName"
是只读的。