如何使用vba for excel获取另一个工作簿中已定义名称的值

时间:2012-07-19 12:59:37

标签: excel excel-vba named-ranges vba

我有几个包含计算的工作簿,我正在进行“自动概览”,将所有这些工作表中的数据组合在一起。要查找数据,我使用命名范围。这些工作正常 但是,有一个定义的名称不指代范围。这是一个公式。

我想要的是从我的概述书中访问该公式的结果(在打开计算书中)。

显然wb.Names("myNamedFormula").RefersToRange不起作用,因为名称不涉及范围 wb.Names("myNamedFormula").Value给出了公式,但不是结果。这个名字的成员都没有得到结果 我尝试使用Evaluate(...)评估公式,但这不起作用,因为它应该在其他工作簿中进行评估。

有谁知道如何获得结果?

谢谢,

ps:我知道一种可能性是让名称引用一个范围,然后在那里进行计算,但我不希望这样。

2 个答案:

答案 0 :(得分:3)

我认为您必须使用Worksheet.Evaluate而不是Application.evaluate(请注意,命名公式中的所有引用都应该是完全限定的绝对引用)。请尝试使用此语法进行评估

ansa = Workbooks("Book1.xlsb").Worksheets(1).Evaluate(Workbooks("Book1.xlsb").Names("AddNumbers").RefersTo)

答案 1 :(得分:2)

这有点像cludge,但是:

在计算wb =MyNamedFormula中向一个单元格添加一个表格(让我们假设在Sheet1上作为示例单元格A1)

在计算wb PointsToMyNamedFormula中添加引用Sheet1!A1

的名称

然后您可以参考wb.Names("PointsToMyNamedFormula").RefersToRange.Value1