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

getting vales from different file locations contained in cells Excel

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

我已经尝试了 =([M5]Sheet1!B8),这在一定程度上有效,但这会弹出一个对话框,我必须手动 select 文件位置,这对于目的来说太手动了。

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

如有任何建议,我们将不胜感激!!

可以在不打开外部文件的情况下从外部文件中获取数据。 Excel 要得到一个数据项,它需要知道:

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

我们在某个单元格中输入所需的信息,比如单元格 C3,格式非常特殊:

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

注意单引号!

然后 运行 这个简短的宏:

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

宏非常易于安装和使用:

  1. ALT-F11 调出 VBE window
  2. ALT-I ALT-M 打开一个新模块
  3. 粘贴内容并关闭 VBE window

如果您保存工作簿,宏也会随之保存。 如果您使用的 Excel 版本晚于 2003,则必须保存 文件为 .xlsm 而不是 .xlsx

删除宏:

  1. 如上所述调出 VBE window
  2. 清除代码
  3. 关闭 VBE window

要使用来自 Excel 的宏:

  1. ALT-F8
  2. Select宏
  3. 触摸运行

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

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

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

必须启用宏才能运行!

您可以使用以下公式从已关闭的工作簿中获取单个单元格值。

它是一个用户定义函数 (UDF),您可以这样称呼它:

=GetClosedCell(A3,B3,C3)

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

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

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

将此函数放在标准代码模块中:

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

这是它在工作表上的样子: