分享

Excel-VBA不打开工作薄取值

 L罗乐 2017-09-29

应用场景

不打开工作薄直接取值


知识要点

1:VBA中没有不打开工作薄而取其工作表数据的方法,但excel的公式却可以完成

2:提供正确的路径和区域地址即可。所以本例借用公式获取数据,在将公式转换成值,从而实现不打开工作薄也可以取值

3:只能取其数值,而不能引用其单元格格式和该区域中的图形对象,如果需要引用格式或者图形对象、图标等,那么必须打开工作

4:Range.FormulaArray 属性  返回或设置区域的数组公式


Sub 取值(路径 As String, 文件 As String, 工作表, 单元格 As String)

    On Error Resume Next

    Dim Rng As Range

    '对变量rng赋值,等于活动单元格为参照原点并扩展其高度、宽度与参数单元格一致的区域

    Set Rng = ActiveSheet.Resize(Range(单元格).Rows.Count, Range(单元格).Columns.Count)

    If Err <> 0 Then

        MsgBox '请调整区域,当前区域不足以存放引用区域的值' & Chr(10) & '建议选择A1在执行程序', 64, '提示'

        Exit Sub

    End If

    '将目标区域复制到以当前表活动单元格为左上角的相同大小的区域中

        With ActiveCell.Resize(Range(单元格).Rows.Count, Range(单元格).Columns.Count)

        '在指定区域输入公式,该公式引用指定路径下的工作表数据,可以是单元格也可以是区域

        .FormulaArray = '='' & 路径 & '\[' & 文件 & ']' & 工作表 & ''!' & 单元格

        '将公式转换为值

        .Value = .Value

    End With

End Sub


Sub 不打开工作薄取销售统计()

    '调用sub过程,指定参数

    取值 ThisWorkbook.Path & '/2017销售', '7月销售.xls', '长江路店', 'A1:B9'

End Sub


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多