从其他工作簿中的未知工作表中获取NamedRange

时间:2016-06-30 09:54:51

标签: excel vba named-ranges

我正在尝试从标准化的Excel格式中提取数据,其中我想要的所有值都是namedRanges。 NamedRanges是特定的工作表,例如c_001参考Sheet1!$ X $ 38。

我已经尝试检索工作簿中的所有名称,例如

'Runtime error 13 - Type mismatch
Set namesInWb = Workbooks(wbName).Names

这似乎不起作用,因为所有名称都是特定的工作表?

然后我想我可以通过Range对象获取namne,例如我希望能够使用这样的东西来获取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)

更新:上一个方法现在有效。只是由于我错过的代码中的错误而失败。

2 个答案:

答案 0 :(得分:0)

在VBA中,您也可以通过将它们放在如此

的方括号中来引用命名范围
Dim namedRange as Range
Set namedRange = [rangeName]

或者直接调用它的方法......

[rangeName].Select

答案 1 :(得分:0)

要选择一个范围,我们应该知道工作表的名称。 Range是工作表的方法,因此我们无法在工作簿上应用Range方法。

如果我们不知道工作簿下的工作表名称,则可以使用以下工作表索引

ThisWorkbook.Worksheets(1).Range("A1").Value

您还可以通过使用(如果您需要在同一工作簿上进行多次操作)来知道工作表的名称

ThisWorkbook.Worksheets(1).Name

其中ThisWorkbok将成为工作簿的对象。