VBA连接Excel数据库
微信公众号原文
系统:Windows 7
软件:Excel 2010
使用场景or困惑
- 本公众号的一些文章中是使用Access做数据库的,很多操作都是通过SQL实现的,对比传统方式,还是高效了很多
- 那么如果只有Excel,能否实现Access那样的高效呢?也就是说将Excel作为数据库来操作
示例:Excel作为数据库,从Excel中获取来自于交通院,语文和数学成绩都是>80分的信息
实现结果
思考
- 传统方法:对数据表进行循环判断,找到满足条件的行
- 新方法:查询通过一句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
代码截图
部分代码解读
- 数据库连接
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
- 工作表的表示方法
tbl_name = "[data$]"
,使用[$]
- 复制rs信息到工作表:
sht.Range("A2").CopyFromRecordset rs
Ps:
1)采用ADO的方式连接的数据库,需要人为先在VBE中打开这个引用,菜单工具-引用
2)当数据量越大,本文中采用的方式,效率越明显,所以是不错的方法幺
以上为本次的学习内容,下回见
更多精彩,请关注微信公众号
扫描二维码,关注本公众号
VBA连接Excel数据库相关推荐
- VBA 连接Oracle 数据库
Sub?linkOracle()?? ?? ????Dim?strConn?As?String??'连接字符串?? ?????? ????Dim?dbConn?As?Object??'连接对象?? ? ...
- java连接Excel数据库读取,写入,操纵Excel表格
java连接Excel数据库读取,写入,操纵Excel表格 (2009-11-15 14:21:03) 转载 标签: java excel 连接 杂谈 分类:技术文档 java连接MicroSoft ...
- oracle vba 数组_Excel VBA 连接各种数据库(二) VBA连接Oracle数据库
(2019.08.02更新)本文内容在Windows10 企业版64bit下测试通过 本文主要内容: Oracle环境配置 ODBC驱动设置.第三方驱动下载 VBA连接Oracle连接方法 Oracl ...
- vba mysql 3706_EXCEL中VBA连接oracle数据库字符串“运行出现3706错误”
我在EXCEL中VBA连接oracle串如下 Conn.ConnectionString = "provider=oraoledb.oracle.1;password=******;user ...
- VBA 连接MySQL数据库
编写Excel VBA工具,连接并操作Mysql 数据库. 系统环境: OS:Win7 64位 英文版 Office 2010 32位 英文版 1.VBA连接MySql前的准 ...
- VBA 连接Access数据库和Excle
VBA 连接数据库步骤: 1.创建连接对象 2.打开连接 3.执行SQL 4.关闭连接 5.释放连接对象 前提:在[工具]>[引用]ADO库 Sub conDatabase()Dim con A ...
- access vba代码大全_VBA 实践指南 -- VBA连接各种数据库
ADO 简介 ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据.例如,如果您希望编写应 ...
- c excel连接mysql数据库_C语言连接Excel数据库
一.问题的提出 在ASP编程中会遇到很多大大小小的难题,我有一次为一家书店设计网站的时候就遇到了一个这样的难题.起初使用Access做数据库,该数据库主要是为了保存书店内图书的信息,但是当记录的条目过 ...
- C#连接EXCEL数据库
using System.Data.OleDb; //命名空间 private void button1_Click(object sender, EventArgs e) { string s ...
- Excel VBA连接ORACLE数据库
'装好oracle客户端,不需引用直接粘贴下列格式运行 Sub connect() Dim strconnt As String Set connt = New ADODB.Connection Di ...
最新文章
- 【java】实现数据在页面之间传输
- 最新版动手学习深度学习和GAN电子书免费下载!
- 远程SSH连接服务与基本排错
- Webpack2的基本使用
- 《此生未完成》痛句摘抄(4)
- Win7怎么设置文件共享 Win7共享设置方法
- CCF201604-2 俄罗斯方块
- mysql 按时间分库分表_sharding-jdbc 按时间分库分表
- PHP批量插入多条数据到Mysql报错:Mysql Prepared statement contains too many placeholders
- Oracle-常见的错误
- 解决jsp页面数据传递乱码问题
- 悟空 mobile.php,悟空CRM无需任何权限的SQL注入漏洞2(ThinkPHP特性)
- PostgreSQL 命令行客户端 psql 使用指南
- TeamViewer安全证书过期,解决办法
- 中国科学院计算机博士范,范习之 博士
- Flink SQL CDC 13 条生产实践经验
- 1.3.3微信小程序WeUI.js网页开发样式库
- 工作中你应该知道的常识(深度好文)
- 【分词器】11大Java开源中文分词器的使用方法和分词效果对比
- 工欲利其事,常用软件使用感受交流分享
热门文章
- STM8L RTC总结初始化和配置
- 格雷码与二进制之间转换及VHDL实现
- ABB机器人VGT文件_ABB机器人GSD文件
- 小程序云函数实现微信支付如此简单
- 标签打印软件如何制作箭头样式
- oracle 怎么清空数据表,oracle怎么清空表数据,oracle清空数据库
- easyui select 默认选中指定值
- win10 ie浏览器安装Flash Player Debugger解决方案
- eclipse运行不了jsp代码,错误代码:couldn't create the java virtual machine. a fatal exception has occurred.
- 自定义View之Layout方法详解