|
还有一种引用的方法,不过不知道快不快!
Rem VBA知识点:Path
Option Explicit
'声明一个带有四个参数的Sub过程
Sub 取值(路径 As String, 文件 As String, 工作表, 单元格 As String)
On Error Resume Next
Dim rng As Range, arr()
Set rng = ActiveCell.Resize(Range(单元格).Rows.Count, Range(单元格).Columns.Count)
If Err <> 0 Then
MsgBox "请调整区域,当前区域不足以存放引用区域的值" _
& Chr(10) & "建议选择A1再执行程序", 64, "提示"
Exit Sub
End If
'将目标区域复制到以当前表活动单元格为左上角的相同大小的区域中
With Range("a1").Resize(Range(单元格).Rows.Count, Range(单元格).Columns.Count) 'range("a1")是需要存放的位置
'在指定区域输入公式,该公式引用指定路径下的工作表数据,可以是单元格也可以是区域
.FormulaArray = "='" & 路径 & "\[" & 文件 & "]" & 工作表 & "'!" & 单元格
'将公式转换成值
.Value = .Value
End With
End Sub
Sub 不打开工作簿而获取其值1()
'调用Sub过程,指定参数
取值 ThisWorkbook.Path & "\人事资料", "人事报表.xls", "部门人员统计", "A1:B9"
End Sub
Sub 不打开工作簿而获取其值2()
Dim arr()
'调用Sub过程,指定参数
取值 ThisWorkbook.Path & "\人事资料", "人事报表.xls", "人事资料", "A1:C42"
End Sub |
|