【发布时间】:2016-06-30 09:54:51
【问题描述】:
我正在尝试从标准化的 Excel 表单中提取数据,其中我想要的所有值都命名为 Ranges。 NamedRanges 是特定于工作表的,例如c_001 指的是 Sheet1!$X$38。
我已尝试检索工作簿中的所有名称,例如
'Runtime error 13 - Type mismatch
Set namesInWb = Workbooks(wbName).Names
这似乎不起作用,可能是因为所有名称都是特定于工作表的?
然后我认为我可以通过 Range 对象获取名称,例如我希望能够使用这样的东西来获取 wsName:
tempRange.Worksheet.Name
虽然我需要先检索 Range 对象,但如果不知道工作表名称,我想不出任何办法。
'Not working - Runtime error 438 - Object does not support this property or method
Set tempRange = Workbooks(wbName).Range("c_001")
'This works now, only failed due to another error earlier in the code that I had missed
Set tempRange = Range(currentName)
更新:最后一种方法现在有效。只是由于我之前错过的代码中的错误而失败。
【问题讨论】:
-
您是否尝试遍历所有工作表以查找特定的命名范围?
-
以上有什么错误/
-
Names collection 返回活动书中的所有姓名。你能解释一下这不起作用吗?您收到错误消息吗?对不起@Nathan_Sav;我试图赞成你的评论,但后来我不小心投了反对票。所以不会让我重新投票。
-
@Nathan_Sav 我已经更新了收到的错误消息。
-
从我的角度来看 Workbooks(wbName).Names 应该可以工作,但也许它返回 Nothing 因为没有全局名称?我不确定 Excel 是否以及如何区分工作表特定名称和非工作表名称。
标签: excel vba named-ranges