微信公众号原文

系统:Windows 7
软件:Excel 2010

使用场景or困惑

  • 本公众号的一些文章中是使用Access做数据库的,很多操作都是通过SQL实现的,对比传统方式,还是高效了很多
  • 那么如果只有Excel,能否实现Access那样的高效呢?也就是说将Excel作为数据库来操作

示例:Excel作为数据库,从Excel中获取来自于交通院,语文和数学成绩都是>80分的信息

实现结果

思考

  1. 传统方法:对数据表进行循环判断,找到满足条件的行
  2. 新方法:查询通过一句SQL实现SQL = "Select " & filds & " From " & tbl_name & " Where (" & searchC & ")",逻辑过程如下:
    • 连接数据库
    • 确定SQL语句
    • 执行SQL语句
    • 获取结果
    • 断开数据库

SQL

代码

过程main

Sub main()Dim dbAddrdbAddr = ThisWorkbook.Path & "\数据源.xlsx"Dim adConn As ADODB.Connection  '连接Set adConn = New ADODB.ConnectionDim rs As ADODB.RecordsetSet rs = New ADODB.RecordsetDim SQL As StringDim fildsDim tbl_nameDim searchCadConn.Open "provider=Microsoft.ACE.OLEDB.12.0;" _& "extended properties=excel 12.0;" _& "data source=" & dbAddrfilds = "姓名,学院,语文,数学"tbl_name = "[data$]"Dim searchC1Dim searchC2Dim searchC3Dim sht_nameDim shtDim isearchC1 = "学院='交通院'"searchC2 = "语文>80"searchC3 = "数学>80"searchC = searchC1 & " and " & searchC2 & " and " & searchC3SQL = "Select " & filds & " From " & tbl_name & " Where (" & searchC & ")"Set rs = adConn.Execute(SQL)sht_name = "示例"Set sht = ThisWorkbook.Worksheets(sht_name)For i = 1 To rs.Fields.Count Step 1sht.Range("A1").Offset(0, i - 1) = rs.Fields(i - 1).Name '字段序号从0开始Next isht.Range("A2").CopyFromRecordset rssht.Cells.EntireColumn.AutoFit'关闭数据库adConn.CloseSet adConn = NothingEnd Sub

代码截图

部分代码解读

  1. 数据库连接
    Excel连接
    adConn.Open "provider=Microsoft.ACE.OLEDB.12.0;" _& "extended properties=excel 12.0;" _& "data source=" & dbAddr

Access连接

With adConn.Provider = "Microsoft.ACE.OLEDB.12.0;".Open "Data Source=" & dbAddr
End With
  1. 工作表的表示方法tbl_name = "[data$]",使用[$]
  2. 复制rs信息到工作表:sht.Range("A2").CopyFromRecordset rs

Ps
1)采用ADO的方式连接的数据库,需要人为先在VBE中打开这个引用,菜单工具-引用

2)当数据量越大,本文中采用的方式,效率越明显,所以是不错的方法幺


以上为本次的学习内容,下回见

更多精彩,请关注微信公众号
扫描二维码,关注本公众号

VBA连接Excel数据库相关推荐

  1. VBA 连接Oracle 数据库

    Sub?linkOracle()?? ?? ????Dim?strConn?As?String??'连接字符串?? ?????? ????Dim?dbConn?As?Object??'连接对象?? ? ...

  2. java连接Excel数据库读取,写入,操纵Excel表格

    java连接Excel数据库读取,写入,操纵Excel表格 (2009-11-15 14:21:03) 转载 标签: java excel 连接 杂谈 分类:技术文档 java连接MicroSoft ...

  3. oracle vba 数组_Excel VBA 连接各种数据库(二) VBA连接Oracle数据库

    (2019.08.02更新)本文内容在Windows10 企业版64bit下测试通过 本文主要内容: Oracle环境配置 ODBC驱动设置.第三方驱动下载 VBA连接Oracle连接方法 Oracl ...

  4. vba mysql 3706_EXCEL中VBA连接oracle数据库字符串“运行出现3706错误”

    我在EXCEL中VBA连接oracle串如下 Conn.ConnectionString = "provider=oraoledb.oracle.1;password=******;user ...

  5. VBA 连接MySQL数据库

    编写Excel VBA工具,连接并操作Mysql 数据库.      系统环境:         OS:Win7 64位 英文版 Office 2010 32位 英文版 1.VBA连接MySql前的准 ...

  6. VBA 连接Access数据库和Excle

    VBA 连接数据库步骤: 1.创建连接对象 2.打开连接 3.执行SQL 4.关闭连接 5.释放连接对象 前提:在[工具]>[引用]ADO库 Sub conDatabase()Dim con A ...

  7. access vba代码大全_VBA 实践指南 -- VBA连接各种数据库

    ADO 简介 ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据.例如,如果您希望编写应 ...

  8. c excel连接mysql数据库_C语言连接Excel数据库

    一.问题的提出 在ASP编程中会遇到很多大大小小的难题,我有一次为一家书店设计网站的时候就遇到了一个这样的难题.起初使用Access做数据库,该数据库主要是为了保存书店内图书的信息,但是当记录的条目过 ...

  9. C#连接EXCEL数据库

    using System.Data.OleDb; //命名空间 private void button1_Click(object sender, EventArgs e)  {   string s ...

  10. Excel VBA连接ORACLE数据库

    '装好oracle客户端,不需引用直接粘贴下列格式运行 Sub connect() Dim strconnt As String Set connt = New ADODB.Connection Di ...

最新文章

  1. 【java】实现数据在页面之间传输
  2. 最新版动手学习深度学习和GAN电子书免费下载!
  3. 远程SSH连接服务与基本排错
  4. Webpack2的基本使用
  5. 《此生未完成》痛句摘抄(4)
  6. Win7怎么设置文件共享 Win7共享设置方法
  7. CCF201604-2 俄罗斯方块
  8. mysql 按时间分库分表_sharding-jdbc 按时间分库分表
  9. PHP批量插入多条数据到Mysql报错:Mysql Prepared statement contains too many placeholders
  10. Oracle-常见的错误
  11. 解决jsp页面数据传递乱码问题
  12. 悟空 mobile.php,悟空CRM无需任何权限的SQL注入漏洞2(ThinkPHP特性)
  13. PostgreSQL 命令行客户端 psql 使用指南
  14. TeamViewer安全证书过期,解决办法
  15. 中国科学院计算机博士范,范习之 博士
  16. Flink SQL CDC 13 条生产实践经验
  17. 1.3.3微信小程序WeUI.js网页开发样式库
  18. 工作中你应该知道的常识(深度好文)
  19. 【分词器】11大Java开源中文分词器的使用方法和分词效果对比
  20. 工欲利其事,常用软件使用感受交流分享

热门文章

  1. STM8L RTC总结初始化和配置
  2. 格雷码与二进制之间转换及VHDL实现
  3. ABB机器人VGT文件_ABB机器人GSD文件
  4. 小程序云函数实现微信支付如此简单
  5. 标签打印软件如何制作箭头样式
  6. oracle 怎么清空数据表,oracle怎么清空表数据,oracle清空数据库
  7. easyui select 默认选中指定值
  8. win10 ie浏览器安装Flash Player Debugger解决方案
  9. eclipse运行不了jsp代码,错误代码:couldn't create the java virtual machine. a fatal exception has occurred.
  10. 自定义View之Layout方法详解