精华内容
下载资源
问答
  • 在Excel的使用过程中,经常需要引用其他工作簿的数据,而用户往往希望能在不打开工作簿或看似不打开工作簿的情况下取得其他工作簿中的数据,有以下几种方法可以实现。 1、使用公式 如果需要引用的数据不是太多,...


    在Excel的使用过程中,经常需要引用其他工作簿的数据,而用户往往希望能在不打开工作簿或看似不打开工作簿的情况下取得其他工作簿中的数据,有以下几种方法可以实现。

    1、使用公式

    如果需要引用的数据不是太多,可以使用公式取得引用工作簿中的工作表数据,如下面的代码所示。

    Sub CopyData_1()
        Dim Temp As String
        Temp = "'" & ThisWorkbook.Path & "\[数据表.xls]Sheet1'!"
        With Sheet1.Range("A1:F22")
            .FormulaR1C1 = "=" & Temp & "RC"
            .Value = .Value
        End With
    End Sub


    复制代码
    代码解析:
    CopyData_1过程在工作表中写入公式引用“数据表”中同一位置单元格中的数据。
    第3行代码将引用工作簿的路径赋给变量Temp。
    第5行代码在作表中写入公式引用数据。
    第6行代码将公式转换为数值。

    2、使用GetObject函数

    使用GetObject函数来获取对指定的Excel工作表的引用,如下面的代码所示。

    Sub CopyData_2()
        Dim Wb As Workbook
        Dim Temp As String
        Application.ScreenUpdating = False
        Temp = ThisWorkbook.Path & "\数据表.xls"
        Set Wb = GetObject(Temp)
            With Wb.Sheets(1).Range("A1").CurrentRegion
                Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
                Wb.Close False
            End With
        Set Wb = Nothing
        Application.ScreenUpdating = True
    End Sub


    复制代码
    代码解析:
    CopyData_2过程使用GetObject函数来获取“数据表”工作簿中的数据。
    第4行代码关闭屏幕更新加快运行速度。
    第5行代码将引用工作簿的路径赋给变量Temp。
    第6行代码使用Set语句将GetObject函数返回的对象赋给对象变量Wb。
    GetObject函数返回文件中的ActiveX对象的引用,语法如下:
    GetObject([pathname] [, class])
    参数pathname是可选的,包含待检索对象的文件的全路径和名称。如果省略,则class参数是必需的。
    参数class是可选的,代表该对象的类的字符串。
    Class参数的格式为appname.objecttype,语法的各个部分如表格 1所示。
    部分    描述
    appname    必需的,提供该对象的应用程序名称。
    objecttype    必需的,待创建对象的类型或类。

    表格 1 Class参数语法的各个部分
    第7行到第10行代码,当GetObject函数指定的对象被激活之后,就可以在代码中使用对象变量Wb来访问这个对象的属性和方法。
    其中第7、8行代码将“数据表”工作簿中的第1张工作表已使用区域的数据赋给本工作表的单元格,第9行代码关闭“数据表”工作簿,使用GetObject函数返回对象的引用时,虽然在窗口中看不到对象的实例,但实际上是打开的,所以需用Close语句将其关闭。
    第12行代码开启屏幕更新。

    3、隐藏Application对象

    通过隐藏Application对象来模拟不打开工作簿取数,如下面的代码所示。

    Sub CopyData_3()
        Dim myApp As New Application
        Dim Sh As Worksheet
        Dim Temp As String
        Temp = ThisWorkbook.Path & "\数据表.xls"
        myApp.Visible = False
        Set Sh = myApp.Workbooks.Open(Temp).Sheets(1)
        With Sh.Range("A1").CurrentRegion
            Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value
        End With
        myApp.Quit
        Set Sh = Nothing
        Set myApp = Nothing
    End Sub
    复制代码


    代码解析:
    CopyData_3过程隐藏Application对象来模拟不打开工作簿取数。
    第2行代码使用New关键字隐式地创建一个Application对象。
    第6行代码将新创建的Application对象的Visible属性设置为False,使之隐藏。
    第7行代码使用Open方法打开“数据表”工作簿(关于Open方法请参阅技巧42 ,因为工作簿是使用新创建的、隐藏的Application对象打开的,所以在窗口中是不可视的。
    第8行到第10行代码将“数据表”工作簿中的第1张工作表已使用区域的数据赋给本工作表的单元格。
    第11行代码使用Quit方法退出新打开的Excel程序。

    4、使用ExecuteExcel4Macro方法

    使用ExecuteExcel4Macro方法可以做到不打开工作簿的情况下获取其他工作薄中指定工作表的数据,如下面的代码所示。

    Sub CopyData_4()
        Dim RCount As Long
        Dim CCount As Long
        Dim Temp As String
        Dim Temp1 As String
        Dim Temp2 As String
        Dim Temp3 As String
        Dim R As Long
        Dim C As Long
        Dim arr() As Variant
        Temp = "'" & ThisWorkbook.Path & "\[数据表.xls]Sheet1'!"
        Temp1 = Temp & Rows(1).Address(, , xlR1C1)
        Temp1 = "Counta(" & Temp1 & ")"
        CCount = Application.ExecuteExcel4Macro(Temp1)
        Temp2 = Temp & Columns("A").Address(, , xlR1C1)
        Temp2 = "Counta(" & Temp2 & ")"
        RCount = Application.ExecuteExcel4Macro(Temp2)
        ReDim arr(1 To RCount, 1 To CCount)
        For R = 1 To RCount
            For C = 1 To CCount
                Temp3 = Temp & Cells(R, C).Address(, , xlR1C1)
                arr(R, C) = Application.ExecuteExcel4Macro(Temp3)
            Next
        Next
        Range("A1").Resize(RCount, CCount).Value = arr
    End Sub


    复制代码
    代码解析:
    CopyData_4过程使用ExecuteExcel4Macro方法获取“数据表”工作薄中指定工作表的数据。
    第14、16行代码使用ExecuteExcel4Macro方法执行Counta函数取得“数据表”工作薄中指定工作表的行数和列数合计。
    ExecuteExcel4Macro方法执行一个Microsoft Excel 4.0宏函数,然后返回此函数的结果,语法如下:
    expression.ExecuteExcel4Macro(String)
    参数expression是可选的,返回一个Application对象。
    参数String是必需的,一个不带等号的Microsoft Excel 4.0宏语言函数,所有引用必须是像R1C1这样的字符串。
    因为Microsoft Excel 4.0 宏不在当前工作簿或工作表的环境中求值,所有的引用都是外部引用,所以无需打开引用工作簿但是需要明确指定工作簿名称。
    第18行代码使用ReDim语句为动态数组arr重新分配存储空间。
    第19行到第24行代码循环取值,将“数据表”工作薄中指定工作表的数据赋给动态数组arr。
    第25行代码将动态数组arr的值赋给工作表的单元格。

    5、使用SQL连接

    使用SQL建立与工作簿的连接,查询数据记录后复制到当前工作表中,如下面的代码所示。

    Sub CopyData_5()
        Dim Sql As String
        Dim j As Integer
        Dim R As Integer
        Dim Cnn As ADODB.Connection
        Dim rs As ADODB.Recordset
        With Sheet5
            .Cells.Clear
            Set Cnn = New ADODB.Connection
            With Cnn
                .Provider = "microsoft.jet.oledb.4.0"
                .ConnectionString = "Extended Properties=Excel 8.0;" _
                    & "Data Source=" & ThisWorkbook.Path & "\数据表"
                .Open
            End With
            Set rs = New ADODB.Recordset
            Sql = "select * from [Sheet1$]"
            rs.Open Sql, Cnn, adOpenKeyset, adLockOptimistic
                For j = 0 To rs.Fields.Count - 1
                    .Cells(1, j + 1) = rs.Fields(j).Name
                Next
            R = .Range("A65536").End(xlUp).Row
            .Range("A" & R + 1).CopyFromRecordset rs
        End With
        rs.Close
        Cnn.Close
        Set rs = Nothing
        Set Cnn = Nothing
    End Sub


    复制代码
    代码解析:
    CopyData_5过程使建立与“数据表”工作簿的连接,查询数据记录后复制到当前工作表中。
    第8行代码删除当前工作表的所有数据。
    第9行到第15行代码建立与“数据表”工作簿的连接。
    第16行到第24行代码查询“数据表”工作簿的全部数据,并复制到工作表中。其中第20行代码将字段名称(标题行)复制到工作表中,第23行代码将查询到的数据记录复制到工作表。

    展开全文
  • 从其他Excel工作簿取值.rar,在Excel VBA开发过程中,如果希望从一个未打开的工作簿中获取单元格的值,也可以借用当前工作簿的单元格进行公式引用,...利用介绍的方法,将演示如何通过后台的操作来从其他工作簿中取值。
  • 包含.xlsm工作簿和该工作簿包含的代码模块的文件夹的大型存储库 这些VBA代码示例来自我经常引用的个人收藏。 适用于文件系统和其他应用程序的广泛且深入的VBA代码块 使用文件夹作为指南,并修改代码以适合您的需求。
  • Excel VBA技巧实例手册

    2016-07-28 22:29:39
    技巧025引用其他工作表的单元格 技巧026引用命名的单元格区域 技巧027在命名的单元格区域内循环 技巧028调整单元格区域的大小 技巧029引用单元格交叉区域 技巧030引用区域内的单元格 技巧031l引用数据列的最后一列...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧51 不打开工作簿取得其他工作簿数据 12 51-1 使用公式 12 51-2 使用GetObject函数 12 51-3 隐藏Application对象 12 51-4 使用ExecuteExcel4Macro方法 12 51-5 使用SQL连接 12 技巧52 返回窗口的可视区域地址 12 ...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧51 不打开工作簿取得其他工作簿数据 121 51-1 使用公式 121 51-2 使用GetObject函数 122 51-3 隐藏Application对象 123 51-4 使用ExecuteExcel4Macro方法 124 51-5 使用SQL连接 125 技巧52 返回窗口的可视区域...
  • 1、激活工作簿 2、创建新工作簿 3、打开工作簿 4、用编号引用工作表 5、用名称引用工作表 6、将文档保存为 Web 页 7、用 A1 样式的记号引用单元格和单元格区域 8、用编号引用单元格 9、引用行或列 10、用快捷记号...
  • Excel_VBA教程

    2014-09-22 11:36:34
    2.3.2 使用并编辑个人宏工作簿中的宏 5 2.4 将宏指定给按钮 6 2.5 将宏指定给图片或其他对象 6 2.6 小结 7 第三课 学习控件 7 3.1 EXCEL开发过程简介 7 3.2 认识不同的控件 7 3.3 向工作表添加控件 7 3.4 设置控件的...
  • 1、激活工作簿 2、创建新工作簿 3、打开工作簿 4、用编号引用工作表 5、用名称引用工作表 6、将文档保存为 Web 页 7、用 A1 样式的记号引用单元格和单元格区域 8、用编号引用单元格 9、引用行或列 10、用快捷记号...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    04105判断单元格的计算公式是否引用其他工作簿数据 04106判断某单元格是否为合并单元格区域的一部分 04107获取单元格区域内的值,并使其矩阵化 04108获取单元格内的前缀字符 04109判断单元格内的数字是否为文本...
  • VBA与数据库

    2015-11-19 18:07:38
    •实例9-4 查询其他工作簿的数据(ADO) 195 •实例9-6 利用ADO对工作表数据进行多重排序 196 •实例9-7 利用ADO按照字符的长度对数据进行排序 197 •实例9-8 比较两张表,将两个表中相同的行数据抓取出来 198 •...
  • 按【F2】键即可打开对象浏览器,在其中查看Excel工作簿及其引用的所有对象属性等。 步骤1 按组合键【Alt+FII]打开VBE。 步骤2 按【F2】键打开对象浏览器。 步骤3 在“搜索文字”中输入“max”,并按...

       

    目录

        步骤1

        步骤2

        步骤3  

    说明


    按【F2】键即可打开对象浏览器,在其中查看Excel工作簿及其引用的所有对象属性等。

        步骤1

        按组合键【Alt+FII]打开VBE。

        步骤2

        按【F2】键打开对象浏览器。

        步骤3  

       在“搜索文字”中输入“max”,并按【Enter]键确定,可以得到搜索结果,如图所示。

    说明

        对象浏览器是当前VBA工程项目中所有引用的类型库、其他项目,以及本项目中所有的对象、方法和属性的浏览器。当不确定某个属性或者方法是否存在于当前项目中时,可以使用对象浏览器进行搜索。同时也可以通过对象浏览器了解某个对象包含哪些属性、方法以及事件。在对象浏览器中选中某个项目时,也可以按【F1】键获取帮助。
     

    展开全文
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    2.3.2 使用并编辑个人宏工作簿中的宏 5 2.4 将宏指定给按钮 6 2.5 将宏指定给图片或其他对象 6 2.6 小结 7 第三课 学习控件 7 3.1 EXCEL开发过程简介 7 3.2 认识不同的控件 7 3.3 向工作表添加控件 7 3.4 设置控件的...
  • Excel VBA程序设计.doc

    2009-07-06 22:16:12
    2.3.2 使用并编辑个人宏工作簿中的宏 13 2.4 将宏指定给按钮 14 2.5 将宏指定给图片或其他对象 14 2.6 小结 14 第三课 学习控件 15 3.1 EXCEL开发过程简介 15 3.2 认识不同的控件 15 3.3 向工作表添加控件 15 3.4 ...
  • Excel_VBA程序设计.pdf

    热门讨论 2009-08-31 23:05:20
    2.3.2 使用并编辑个人宏工作簿中的宏 13 2.4 将宏指定给按钮 14 2.5 将宏指定给图片或其他对象 14 2.6 小结 14 第三课 学习控件 15 3.1 EXCEL开发过程简介 15 3.2 认识不同的控件 15 3.3 向工作表添加控件 15 3.4 ...
  • Excel VBA与数据库整合应用范例精讲

    热门讨论 2011-10-29 18:48:38
    实例9-5 获取其他工作簿中的工作表名称清单(ADOX) 实例9-6 利用ADO对工作表数据进行多重排序 实例9-7 利用ADO按照字符的长度对数据进行排序 实例9-8 比较两张表,将两个表中相同的行数据抓取出来 实例9-9 ...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    目 录 一、VBA语言基础...................................................................................................................1 第一节 标识符....................................................
  • Excel 2007与VBA编程从入门到精通 10/10

    热门讨论 2012-04-01 15:47:40
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 6/10

    热门讨论 2012-04-01 14:47:49
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 1/10

    热门讨论 2012-04-01 13:34:05
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 9/10

    热门讨论 2012-04-01 15:43:41
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 3/10

    热门讨论 2012-04-01 14:09:14
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 5/10

    热门讨论 2012-04-01 14:34:23
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 2/10

    热门讨论 2012-04-01 13:54:03
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 4/10

    热门讨论 2012-04-01 14:21:28
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 8/10

    热门讨论 2012-04-01 15:29:41
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • Excel 2007与VBA编程从入门到精通 7/10

    热门讨论 2012-04-01 15:01:23
     本书将带领读者历经Excel 2007 VBA从入门到精通的全部学习过程,介绍Excel VBA的基础知识和基本语法结构,引导读者掌握Excel VBA的基本操作,如录制宏,以及使用Excel VBA操作Excel 的基本对象工作簿、工作表、...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
     3.3.3 引用其他的工作表或工作簿  3.4 使用名称  3.4.1 命名单元格和单元格区域  3.4.2 将名称应用于现有的引用  3.4.3 交叉名称  3.4.4 命名列和行  3.4.5 名称的作用范围  3.4.6 命名常量  3.4.7 命名...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
     3.3.3 引用其他的工作表或工作簿  3.4 使用名称  3.4.1 命名单元格和单元格区域  3.4.2 将名称应用于现有的引用  3.4.3 交叉名称  3.4.4 命名列和行  3.4.5 名称的作用范围  3.4.6 命名常量  3.4.7 命名...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

vba引用其他工作簿