如果要从一个已关闭的工作簿中获取数据,可以用下面的方法来实现:
1.定义一个自定义函数
按Alt+F11,打开VBA编辑器,单击菜单“插入→模块”,在右侧的代码窗口中输入下列自定义函数,:
Private Function GetDataFromClosedWorkbook(path, file, sheet, ref)
'从已关闭的工作簿中获取数据
Dim arg As String
'确保文件存在
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "文件不存在"
Exit Function
End If
'创建参数
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
GetDataFromClosedWorkbook = ExecuteExcel4Macro(arg)
End Function
上述自定义函数的参数分别为:
path:为已关闭的工作簿的路径
file:已关闭的工作簿名称
sheet:工作簿中的工作表名称
ref:所引用的单元格
2.使用自定义函数
例如可以使用下面的代码从“h:\mydoc\book1.xls”工作簿“Sheet1”工作表的A1:L12区域中读取数据,并写入当前活动工作表的A1:L12区域:
Sub Test()
p = "h:\mydoc"
f = "book1.xls"
s = "Sheet1"
Application.ScreenUpdating = False
For r = 1 To 100
For c = 1 To 12
a = Cells(r, c).Address
Cells(r, c) = GetDataFromClosedWorkbook(p, f, s, a)
Next c
Next r
Application.ScreenUpdating = True
End Sub |