使用VBA单元格引用创建对已关闭工作簿的外部引用

使用VBA单元格引用创建对已关闭工作簿的外部引用,vba,reference,excel-indirect,Vba,Reference,Excel Indirect,我被一个问题困住了。我有一系列单元格,其中包含指向外部工作簿的路径,所有这些单元格都包含相同的命名范围。 例如,在B2单元格的工作簿中,我有一个文本字符串,读作“C:\test\test.xlsm”。在这个特定的文件中,我将有一个命名范围,名为“namedrange”。现在,我想使用VBA中创建的函数来引用这个namedrange。我想使用“索引”功能来引用外部的、已关闭的工作簿。然而,索引不允许我引用单元格来创建引用。我需要使用INDIRECT:然而,INDIRECT不允许我对关闭的工作簿使用

我被一个问题困住了。我有一系列单元格,其中包含指向外部工作簿的路径,所有这些单元格都包含相同的命名范围。 例如,在B2单元格的工作簿中,我有一个文本字符串,读作“C:\test\test.xlsm”。在这个特定的文件中,我将有一个命名范围,名为“namedrange”。现在,我想使用VBA中创建的函数来引用这个namedrange。我想使用“索引”功能来引用外部的、已关闭的工作簿。然而,索引不允许我引用单元格来创建引用。我需要使用INDIRECT:然而,INDIRECT不允许我对关闭的工作簿使用索引。那么我将如何处理这个问题呢? 我尝试创建名为“reference”的函数,该函数将链接到单元格B2,然后使用例如INDEX(reference(B2),1,1)来引用外部工作簿“namedrange row 1 column 1”。但这不起作用。有人知道吗?类似地,我想使用函数匹配这些引用。非常感谢

Function Reference(stradd As String) As Range
    Reference = Workbooks(stradd).Range("namedrange")
End Function

您当然可以使用索引/匹配函数来引用已关闭的工作簿,例如:

使用index/match在名为“Test.xlsx”的已关闭工作簿的A列中查找“steve”,并在相应行的B列中返回值:

=INDEX('C:\Users\david\u zemens\Desktop\[test.xlsx]Sheet1'!$A$1:$B$1,匹配(“steve”,'C:\Users\david\u zemens\Desktop\[test.xlsx]Sheet1'!$A:$A,FALSE),2)

显然,您可以将“Steve”的*lookup_值*更改为任何内容,包括单元格引用