从单元格Excel中包含的不同文件位置获取值

所以我试图在Excel中创build一个跟踪文件,并在单元格M5中,我有一个文件位置链接到一个支持文件,因此,包含一些重复的信息,所以我想尝试和拉某些领域(本例中的B8 )从M5引用的外部文件中。

我已经尝试了=([M5]Sheet1!B8) ,它可以在一定程度上工作,但这会popup一个对话框,我不得不手动select手动文件位置。

我也研究过使用INDIRECT函数,但不能保证这两个文件将同时打开,所以如果可能的话,更喜欢另一个选项。

任何build议将非常感谢!

以下是可用于从封闭工作簿中获取单个单元格值的公式。

这是一个用户定义函数(UDF),你可以这样调用它:

 =GetClosedCell(A3,B3,C3) 

第一个参数是工作簿path和名称。

第二个参数是工作表名称。

第三个参数是单元格的地址。

把这个函数放在一个标准的代码模块中:

 Public Function GetClosedCell(ByVal FileSpec$, ByVal SheetName$, ByVal RangeAddress$) Const CNX = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[];Extended Properties=""Excel 12.0;imex=1;hdr=no;""" Const QRY = "SELECT * FROM [.$|:|]" On Error GoTo errorh RangeAddress = Range(RangeAddress)(1, 1).Address(0, 0) With CreateObject("adodb.recordset") .Open Replace(Replace(QRY, "|", RangeAddress), ".", SheetName), Replace(CNX, "[]", FileSpec) GetClosedCell = .Fields(0) End With Exit Function errorh: GetClosedCell = "ERROR: " & Err & " " & Err.Description End Function 

以下是在工作表上的外观:

在这里输入图像说明

可以从外部文件抓取数据,而无需打开它。 对于Excel来获取数据项,它需要知道:

  1. 文件位置
  2. 该位置内文件的名称
  3. 该文件中的工作表的名称
  4. 该工作表中单元格的地址

我们将所需的信息input到某个单元格中,例如以非常特定的格式说出单元格C3

 'C:\TestFolder\[ABC.xls]xxx'!R9C2 

注意单引号!

然后运行这个短的macros:

 Public Sub GrabData() Dim r1 As Range, r2 As Range Set r1 = Range("C3") Set r2 = Range("C4") r2.Value = ExecuteExcel4Macro(r1.Value) End Sub 

将检索数据并将其放置在单元格C4中

macros很容易安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开一个新的模块
  3. 粘贴东西,closuresVBE窗口

如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除macros:

  1. 如上所示调出VBE窗口
  2. 清除代码
  3. closuresVBE窗口

从Excel使用macros:

  1. ALT-F8
  2. selectmacros
  3. 触摸RUN

要了解有关macros的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

macros必须启用这个工作!