如何通过CodeName引用Excel工作表?
如何通过工作表的CodeName而非标签名引用工作表?
最简洁的直接引用方法(一行代码)
每个工作表的CodeName(在VBA编辑器「属性窗口」的(名称)栏设置)本身就是全局可直接调用的对象,无需通过Worksheets集合查找:
Set ws = Sheet1 ' 把Sheet1替换成你的目标工作表的CodeName
甚至可以直接用CodeName操作工作表,无需声明变量:
Sheet1.Range("A1").Value = "Hello" ' 直接通过CodeName操作单元格
动态通过CodeName字符串引用(适用于CodeName存于变量的场景)
如果你只有CodeName的字符串(比如从变量、单元格读取),可以通过VBA项目组件获取对应工作表对象,一行代码搞定:
Set ws = ThisWorkbook.VBProject.VBComponents("目标CodeName").Object
注意:使用此方法需在Excel选项中启用「信任对VBA项目对象模型的访问」(文件→选项→信任中心→信任中心设置→宏设置),否则会触发权限错误。
你之前代码的问题说明
ThisWorkbook.Worksheets("CodeName")错误:Worksheets集合的参数仅接受工作表标签名或索引,不识别CodeName。wsn = ActiveSheet.CodeName正确:这段代码能获取当前活动工作表的CodeName字符串,但仅获取名称,并非引用工作表对象。
内容的提问来源于stack exchange,提问作者Quartz_au
相关产品推荐
相关产品推荐

