所以我试图在Excel和单元格M5中创建跟踪文件,我有一个链接到支持文档的文件位置,因此包含一些重复的信息,所以我想尝试拉出某些字段(在本例中为B8)来自M5中引用的外部文件。
我已经尝试了=([M5]Sheet1!B8)
,它在一定程度上起作用,但这会打开一个对话框,我必须手动选择文件位置,这对于此目的来说太过手册了。
我也研究过使用INDIRECT功能,但不能保证两个文件同时打开,所以如果可能的话,更喜欢其他选项。
任何建议都会非常感激!!
答案 0 :(得分:1)
以下是可用于从已关闭的工作簿中获取单个单元格值的公式。
这是一个用户定义函数(UDF),您可以这样称呼它:
=GetClosedCell(A3,B3,C3)
第一个参数是工作簿路径和名称。
第二个参数是工作表名称。
第3个参数是单元格的地址。
将此功能放在标准代码模块中:
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
以下是工作表的外观:
答案 1 :(得分:0)
可以在不打开外部文件的情况下从外部文件中获取数据。要使Excel获取数据项,需要知道:
我们在一些单元格中输入所需的信息,比如以非常特定的格式显示单元格 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
中宏非常易于安装和使用:
如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除宏:
要使用Excel中的宏:
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其生效!