单元格中使用文件名的封闭工作簿的Excel单元格引用

我有一个包含96个xls文件的中央位置; 这96个文件中的每一个代表一个单独的testing:

“\ server5 \ Operations \ MainBoardtesting中心位置不要删除或重命名”

我创build了一个Excel工作簿,将单个testing的所有信息input到一张纸上。 然后,我使用VBA来拉取文件的名称,并在同一工作簿的第二张表上添加一个链接到文件。 我将这些文件链接到表1。

接下来,我将与testing执行相对应的首行上的所有信息添加到每个工作簿(Test)的单个行中。

现在我需要在新的工作簿(高级主板testinglog.xlsx)上填充工作表1

到目前为止,这个公式是有效的,但只适用于开放的工作簿

=INDIRECT("'\\server5\Operations\MainBoard testing central location DO NOT REMOVE or RENAME\["&A7&"]Summary'!$E9") 

其中A7代表从A6到A103的文件名

总结E9是我想在单元格C7中input的单元格

Excel捕获C7

请注意填充的值,这是因为我打开了这两本工作书,所有#REF! 单元格包含与填充的单元格相同的公式。

请让我知道如果您需要任何额外的信息来完成这个繁琐的任务

我也试过微软推荐的方法:

 ='[20160613 1002257 35000010-01B.xls]Summary'!$E9 

用包含文件名的单元replace文件名:

 ='["&A7&"]Summary'!$E9 

我得到#REF! 在单元格和公式栏中自动更改为:

 ='(\\server5\Operations\MainBoard testing central location DO NOT REMOVE or RENAME\["&A7&"]Summary'!$E9 

据微软称,Indirect()函数必须打开工作簿。 你可以通过使用VBA循环目录来获取使用这个路由的单元格值。

有一个UDF,下面是你如何添加它:

  • 在Excel中打开Visual Basic编辑器(function区的“开发”选项卡 – 您可能需要进入Excel选项以取消隐藏)。

  • 右键单击VBA项目([您的工作簿名称]),突出显示插入,然后单击模块。

  • 将下面的内容粘贴到module1中,并将工作簿保存为.xlsm。

码:

 Function GetField(Path As String, WorksheetName As String, CellRange As String) As Variant Dim wb As Workbook Dim ws As Worksheet Dim rng As Range Set wb = GetObject(Path) Set ws = wb.Worksheets(WorksheetName) Set rng = ws.Range(CellRange) Application.DisplayAlerts = False wb.Saved = True wb.Close SaveChanges:=False Application.DisplayAlerts = True End Function 

然后,您可以在此工作簿中使用= GetField()。

参数:= getfield(“\ server5 \ Operations \ MainBoardtesting中心位置不要删除或重命名\”&A6,“摘要”,“E9”)

只用一个文件进行testing,但是你应该能够在多行的行/列中使用单元格引用,文件名等。

确认这可以在多个行/列上工作

编辑:改变工作簿如何从Alistair Weir提供的一些代码closures另一个问题。