示例

Access是微软Office组件的数据库软件,使用它可以进行简单的数据库软件的开发。但Access的图表功能和数据分析功能不如Excel强大,常用的做法可以将Access中的数据导入
Excel中再进行处理。如何使用VBA导入Access的数据?如图所示,该表为Access中某个公司的加工数据表。

加工记录
ID 日期 型号 规格 加工人 数量
25 2010/12/27 星期一 ZPSZ 350*500*2800 王小虎 15
26 2010/12/27 星期一 ZPSZ 250*300*2900 张兵 31
27 2010/12/27 星期一 ZPSZ 250*300*3000 何志刚 22
28 2010/12/27 星期一 ZPSZ 300*400*2800 林杰 25
29 2010/12/27 星期一 BPS 300*400*2900 刘建军 17
30 2010/12/27 星期一 BPS 300*400*3500 何腾壮 27
31 2010/12/27 星期一 ZPSZ 300*400*3500 陈德群 26
32 2010/12/27 星期一 ZPSZ 250*300*3500 朱章兵 33
33 2010/12/28 星期二 ZPSZ 350*500*2800 叶胜 39
34 2010/12/27 星期一 ZPSZ 250*300*2900 吕金军 24
35 2010/12/27 星期一 ZPSZ 250*300*3000 丁敬新 15
36 2010/12/28 星期二 ZPSZ 300*400*2800 王小虎 23
37 2010/12/27 星期一 BPS 300*400*2900 张兵 28
38 2010/12/27 星期一 BPS 300*400*3500 何志刚 10
39 2010/12/28 星期二 ZPSZ 300*400*3500 林杰 11
40 2010/12/27 星期一 ZPSZ 250*300*3500 刘建军 33
41 2010/12/28 星期二 ZPSZ 300*400*3500 何腾壮 28
42 2010/12/27 星期一 ZPSZ 250*300*3500 陈德群 32
43 2010/12/27 星期一 BPS 300*400*2900 朱章兵 36
44 2010/12/28 星期二 BPS 300*400*3500 叶胜 30
45 2010/12/27 星期一 ZPSZ 300*400*3500 吕金军 21
46 2010/12/28 星期二 ZPSZ 250*300*3500 丁敬新 32
47 2010/12/28 星期二 ZPSZ 350*500*2800 叶胜 39
48 2010/12/28 星期二 ZPSZ 300*400*2800 王小虎 23
49 2010/12/28 星期二 ZPSZ 300*400*3500 林杰 11
50 2010/12/28 星期二 ZPSZ 300*400*3500 何腾壮 28
51 2010/12/28 星期二 BPS 300*400*3500 叶胜 30
52 2010/12/28 星期二 ZPSZ 250*300*3500 丁敬新 32

代码

利用ADO组件可以方便地对各种数据进行连接和访问。ADO组件中的Connection对象可以实现对数据库的连接,并可以快速实现SQL语句的执行,然后再用VBA将SQL查询的结果输出到Excel表格中。
    打开VBE窗口,选择菜单“工具”一“引用”,勾选Microsoft ActiveX Data Objects 2.8Library,并单击“确定”按钮。

Option ExplicitSub 导入Access数据()Dim AdoConn As New ADODB.ConnectionDim strConn As StringDim strSql As String'设置连接字符串strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _"Data Source=" & ThisWorkbook.Path & Application.PathSeparator & _"数据库.accdb;"'设置SQL查询语句strSql = "Select * From 型号规格"'打开数据库连接AdoConn.Open strConn'执行查询,并将结果输出到当前表格A1ActiveSheet.Range("A1").CopyFromRecordset AdoConn.Execute(strSql)'关闭连接AdoConn.Close
End Sub

利用ADO连接数据库

ADO的全称是ActiveX Data Object,是一个用于存取数据源的COM组件,用以快速实现各种数据库的连接、读取、写入。在ADO组件中有一个Connection对象,利用Connection对象的Open方法可以实现数据库的连接。Open方法的语法如下:

Connection.Open 连接文本,用户名,密码,选项
  • 连接文本:一个包含有关连接的信息的字符串。
  • 用户名:一个字符串,包含建立连接时要使用的用户名称。
  • 密码:一个字符串,包含建立连接时要使用的密码。
  • 选项:一个整型数值,确定应在建立连接之后(同步)还是在建立连接之前(异步)返回本方法。-1(默认)代表同步打开连接,16代表异步打开连接。

利用ADO执行SQL查询并在Excel中输出结果

连接数据库之后,即可利用ADO组件中Connection对象的Execute方法执行SQL语句查询,并将结果写入工作表中,其格式为:

Range.CopyFromRecordset AdoConn.Execute(SQL{吾句)

其中,Range为结果输出的起始点,即结果数据最左上角所在的单元格,SQL语句为执行查询的SQL语句。

利用该输出方式将结果写入工作表中时,其结果是没有标题行(字段名)的。

SQL语句

SQL (Structured Query Language)即结构化查询语言,是关系数据库的标准语言。许多流行的数据库均支持SQL语句的查询,在微软Office系统的Excel与Access中支持SQL语句
对数据进行查询、修改操作等。

ADO连接不同的数据库

利用ADO可以实现多种数据库的连接,只需改变连接字符串中的参数即可。本例中以连接Access 2007以上的数据库为例,若要连接Access 2003数据库,可以采用以下连接:

strConn="Provider=Microsoft.Jet.OLEDB.4.0; " & _"Data Source=" & ThisWorkbook.Path & Application.PathSeparator & "数据库.mdb"

对于带有密码的Access数据库,2007以上版本和2003版本的连接字符串分别如下:

strConn="Provider=Microsoft.ACE.OLEDB.12.0;" & _"DataSource=" & ThisWorkbook.Path & _Application.PathSeparator & "; Jet OLEDB;" & _"Database Password=密码;¨
strConn = "Privider=microsoft.oledb.4.0;" & _"Data source=" & thisworkbok.Path & Application.PathSeparator & _";Jet OLEDB:database password=密码"

连接Excel 2007以上版本的工作簿,可以采用以下连接字符串:

strConnExcel2007 = "Provider=Microsoft.ACE.OLEDB.12.0;" & _"Data Source=" & ThisWorkbook.Path & Application.PathSeparator & _"数据库.xls;Extended Properties=""Excel 12.0;HDR=YES"";"strconexcel2003 = "Provider=Microsoft.ACE.OLEDB.4.0;" & _"Data Source=" & ThisWorkbook.Path & Application.PathSeparator & _"数据库.xls;Extended Properties=""Excel 8.0;HDR=YES"";"

其中,HDR=YES表示数据中的第一行为列(字段)的名称,如果省略该参数或者HDR=No,那么将认为表格中是数据,没有列名。
    对于Excel 2007及以上的版本,设置为Excel 12.0;Excel 2007之前的版本,则设置为Excel 8.0。对于带有密码保护的Excel工作簿,ADO无法打开,只有当该工作簿已经打开时,ADO才可以正常连接。
连接文本文件时,可以采用以下连接字符串:

strconnTxt = "Provider=Microsoft.ACE.OLEDB.12.0;" & _"Data Source=" & ThisWorkbook.Path & Application.PathSeparator & _";Extended Properties=TEXT;"

参数Data Source为包含文本文件的目录名,而不是文件名称。如果文本文件的第一行不包含字段名称,则必须在参数Extended Properties中加HDR=No,以避免丢失第一行的数据。
当连接文本文件进行SQL查询时,查询语句中的数据表即为设定目录下的文本文件。以文本文件“数据库.Txt”为例,SQL语句应按照如下格式书写:

SELECT * FROM [数据库#Txt]

若要连接SQL Server数据库,可以采用以下连接字符串:

strConn="Provider=SQLOLEDB;" & _
" Data Source=ServerName\InstanceName;" & _
"Initial Catalog=DatabaseName;" & _
"User ID=UserName;" & _
"Password=password; "

Excel 2010 VBA 入门 098 导入Access数据库的数据相关推荐

  1. Excel 2010 VBA 入门 067 导入多个工作簿中的工作表

    目录 示例 实现代码 导入多个工作簿中的工作表 Application. ScreenUpdating属性 示例 如图所示,在同一个目录下有多个工作表名称相同的工资汇总月报.现希望通过VBA建立该多个 ...

  2. Excel 2010 VBA 入门 013 导入或导出VBA代码

    目录 1.导出宏代码 步骤1 步骤2 2.导入宏代码 步骤1 步骤2 说明 利用VBE的导入文件和导出文件功能,可以方便地导入和导出代码以实现代码的迁移. 1.导出宏代码 步骤1 按组合键[Alt+F ...

  3. Excel 2010 VBA 入门 066 读取其他工作簿的数据

    目录 示例 实现代码 打开关闭的工作簿 示例 如图所示,在"数据库.xlsx"工作簿中存有"销售数据",在相同目录下的工作簿  希望能够将该工作簿中该工作表中的 ...

  4. Excel 2010 VBA 入门 034 创建图片批注

    目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...

  5. Excel 2010 VBA 入门 039 按条件隐藏数据行

    目录 示例: 实现代码1 行和列的隐藏 实例代码2 单元格对象的AutoFilter(自动筛选)方法 实现代码3 单元格对象的AdvancedFilter(高级筛选)方法 ​​​​​​​ 示例: 在E ...

  6. Excel 2010 VBA 入门 063 跨表数据录入

    目录 示例 实现代码 ListObject对象 ListObject对象的表示方法 1.序号表示法 2.名称表示法 ListColumn对象 向ListObject中添加新数据 使用VBA添加List ...

  7. Excel 2010 VBA 入门 001显示开发工具选项卡

    目录 VBA简介 宏简介 显示"开发工具"选项卡 ​ VBA简介 Visual Basic for Application (VBA)是Visual Basic的一种宏语言,是依附 ...

  8. Excel 2010 VBA 入门 006 设置宏安全性

    目录 操作方法 步骤1单击"开发工具"选项卡中的"宏安全性"按钮,如图所示. ​ 步骤2在"信任中心"的"宏设置"选项中 ...

  9. Excel 2010 VBA 入门 139 创建工作簿级的自定义选项卡

    目录 题 码 Excel工作簿的实质 XML简介 customUI.xml 常用的功能区控件及通用属性 tabs控件和tab控件 group控件 命令控件 内置控件的ID customUI.xml中控 ...

最新文章

  1. oracle语法垃圾,oracle 语法
  2. 器件旋转45度_分享!旋转楼梯尺寸注意事项
  3. Python 统计文本中单词的个数
  4. 罗氏制药世界搜索引擎跟踪,关键字 罗氏制药
  5. android 大文本存储,Android操作文件存储信息 利用SharedReference存储信息(获取SDCARD大小)...
  6. 远去的背影与落日以及一对蒙古年轻夫妻
  7. php 获取对象所有成员变量,PHP成员变量获取对比
  8. Android检测是否有悬浮窗,Android 获取判断是否有悬浮窗权限的方法
  9. Java开发者薪资最低?程序员只能干到30岁?国外真的没有996?Intellij真的比Eclipse受欢迎?
  10. 【IDEA工具设置】IDEA引入新项目以及项目配置
  11. python协程调度方式_python 3.x 学习笔记17(协程以及I/O模式)
  12. MSP430如何给板子下载程序?(IAR MSPFET CCS)
  13. 聊聊高并发系统之限流特技(一)作者:张开涛
  14. Android NDK 下载地址
  15. linux ora03113,ora-03113 问题解决
  16. linux免杀工具,安卓Apk免杀工具:backdoor-apk 教程
  17. python实现 温度转换(嵩天老师)
  18. docker容器端口映射
  19. 基于导向滤波的图像融合(GFF)
  20. chrome浏览器升级导致无法手动设置cookie,设置无法保存

热门文章

  1. JMX enabled by default Error contacting service. It is probably not running错误解决
  2. mysql8.0版本的jdbc驱动中把datetime数据类型映射的Java类改变
  3. Watir vs. Selenium
  4. python ASF API下载Sentine-1数据
  5. 道通转债,微芯转债,博22转债上市价格预测
  6. python爬虫专家_Python爬虫入门教程 27-100 微医挂号网专家团队数据抓取pyspider-阿里云开发者社区...
  7. python读取Excel指定范围并转为数组
  8. Torch深度学习的60分钟教程(翻译)
  9. 高斯判别分析(GDA)——含python代码
  10. aiem模型matlab,基于MIMICS模型的麦田地表土壤含水量反演研究