Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库
本文主要涉及:
- VBA中的SQL Server环境配置
- VBA连接SQL Server数据库
- VBA读写SQL Server数据
- 如何安装SQL Client
系统环境:
- Windows 7 64bit
- Excel 2016 64bit
1. VBA连接SQL Server前的环境配置
在Excel这边,需要先在VBE中启动数据库连接支持。按下Alt+F11打开VBE,在菜单栏选择“工具”-“引用”,在弹出的引用窗口中,找到"Microsoft ActiveX Data Objects 6.1 Library"和"Microsoft ActiveX Data Objects Recordset 2.8 Library",把前面的框勾选上,点击确定即可。 (如果不是这两个版本,则选择一个版本号最高的勾选即可,如果是需要分享给office2003版的用户,建议勾选版本最低的)
2. VBA连接SQL Server
在按照上述步骤配置了环境支持后,就可以在VBA中使用代码连接SQL Server了。
首先需定义连接对象:
Dim conn as ADODB.Connection
Set conn = new ADODB.Connection
这里也可以简写为:
Dim con As New ADODB.Connection
连接数据库
conn.ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"
conn.Open
连接字符串ConnectionString
中的各个参数应该很明了,就不一一解释了。
上一段代码也可以简写为
con.Open "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"
至此,数据库连接成功!
可以使用连接对象的State
属性和Version
属性查看数据库状态和版本(检查是否连接成功)
MsgBox("连接成功!" & vbCrLf & "数据库状态:" & con.State & vbCrLf & "数据库版本:" & con.Version)
最后关闭数据库连接
con.Close
Set con = Nothing
整个过程的完整代码如下:
Sub 连接SQL Server数据库()
'1. 引用ADO工具
'2. 创建连接对象
Dim con As New ADODB.Connection
'3. 建立数据库的连接
con.ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"
con.Open MsgBox ("连接成功!" & vbCrLf & "数据库状态:" & con.State & vbCrLf & "数据库版本:" & con.Version) con.Close Set con = Nothing End Sub
3. VBA读写SQL Server数据表
3.1 读取SQL Server数据到Excel
代码如下:
Sub linkSQL Server()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
'配置连接串
conn.ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"
conn.Open
'从test数据库的YGXM表中取出所有数据
rs.Open "select * from `YGXM`", conn
'设置表头
Range("A1:B1").Value = Array("ID", "Name")
'将数据输出到工作表
Range("A2").CopyFromRecordset rs
'关闭连接
rs.Close: Set rs = Nothing
conn.Close: Set conn = Nothing
End Sub
相比前面的代码,以上代码多了 ADODB.Recordset 和 rs.Open,ADODB.Recordset 用于执行SQL语句并接收查询语句返回的结果集。
这里需要提一下的是,在VBA中执行SQL语句有两种方式,其一是使用连接对象执行: conn.Execute ,其第一个参数就是SQL语句;另一种则使用结果集对象执行: rs.Open ,这种方式有两个必要参数,分别是SQL语句和连接对象,如上例中的 rs.Open "select * from `test`", conn 。
接下来的两行Range是用于把查询结果复制到Excel表格中的。
3.2 写入数据到SQL Server
其实写入数据,只需要把上例中的SQL语句改成 UPDATE 或者 INSERT 即可,就不多说了。
番外篇—— 安装SQL Server client 服务
如果你正好需要使用其他语言通过ODBC连接SQL Server,可能需要先安装SQL Server client服务。
可以选择使用官方安装包,或者使用Navicat连接一次SQL Server(第一次连接时如果没安装会提示你安装)
这里以使用官方安装包为例: 下载地址 提取码: 913s
一路下一步,在这一步选择“此功能及所有子功能将安装到本地硬盘上
然后继续一路下一步即可。
ODBC的设置和MySQL或Oracle类似,在此不再赘述,如需要可以留言或者发邮件讨论。
PS:数据库连接工具推荐使用Navicat,可以同时连接不同的数据库,非常方便。
我常用的是11.0.16版本 下载地址 提取码: s5kt
往期链接:
Excel VBA 连接各种数据库(一) VBA连接MySQL数据库
Excel VBA 连接各种数据库(二) VBA连接Oracle数据库
Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库的更多相关文章
- SQL Server数据库邮件配置
一.数据库邮件介绍 数据库邮件是从SQL Server数据库引擎中发送电子邮件的企业解决方案,通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中可以包含查询结果,还可以包含来自网络中任何 ...
- SQL Azure (14) 将云端SQL Azure中的数据库备份到本地SQL Server
<Windows Azure Platform 系列文章目录> 注意: 1.只有SQL Server 2012 CU4及以上版本才支持本章内容 2.当你的数据库文件很大时,建议优化以下内容 ...
- SQL Server 数据库项目
ylbtech-.NET Framework: SQL Server 数据库项目 SQL Server 数据库项目 类型:SQL Server 用于创建 SQL Server 数据库的项目 1. 新建 ...
- SQL SERVER 数据库邮件配置
1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方案.通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中 ...
- SQL Server 数据库定时自动备份
原文:SQL Server 数据库定时自动备份 SQL Server 数据库定时自动备份——每天定时备份,保留前8天的备份 利用SQL Server代理新建作业来定期备份 1)在数据库库的[SQL S ...
- vs连接服务器sql server数据库 web.config和代码
方法一.在web.config里面配置,后连接数据库 (1)web.config文件:加在<connectionStrings>和</connectionStrings> 之间 ...
- JDBC连接sql server数据库及其它
JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...
- Sql Server 数据库之间如何进行跨网远程连接访问
场景说明 现在有一台A电脑和一台B电脑,两台电脑都安装了Sql Server数据库,两台电脑不在一个局域网(我们考虑的是不同网络的两台数据库连接),比如A电脑在公司,B电脑在家里,现在我要在家里用B电 ...
- JDBC连接sql server数据库的详细步骤和代码
JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...
随机推荐
- 从身份证号提取生日并更新到生日字段中的SQL语句
1:根据身份证号 更新 生日字段 SQL update 学生信息 ,)+,)+,) 2:根据身份证号 更新 性别字段 SQL update 学生信息 set 性别='男' and substring( ...
- 10_PAE_非PAE
前置知识: 在 windows 中 保护模式 有两种模式: 段保护 和 页保护 段保护 主要体现在 段选择子上:但是数据段.代码段.栈段等采用的都是4GB平坦模式,段的特征并没有那样展现.所以具体的保 ...
- linux下设置Git
目录 ## Git介绍 1.工作原理 2.SVN与Git的最主要的区别? 3.操作 4.创建本地仓库 5.把文件添加到本地仓库 6.版本回退 7.理解工作区(workspace)与暂存区(index) ...
- Ubuntu Server 19配置静态IP
这个/etc/netplan下默认有个文件50-cloud-init.yaml,直接修改它就行了 sudo vim /etc/netplan/50-cloud-init.yaml 网口名字ens33可 ...
- 关于print()里面的sep和end参数的使用
print('hello', 'world') #默认用空格隔开 #hello world print('hello', 'world', sep='wuli') #sep=''可以用来设置连接的字符 ...
- nodejs mysql 连接数据库
1.设计数据库 2.设计数据库表 3.下载MySQL模块 npm install --save mysql 4.编写代码 const mysql=require('mysql'); //1.连接 // ...
- Windows中区位码转换为机内码
步骤的简化 区位码的区和位分别加上32得到国标码, 再分别加上128得到机内码 区位码的区和位分别加上160得到机内码 区位码加上A0A0H = 机内码 示例: 我 我的区位码是4650 区位码 46 ...
- List<Map<String,Object>> 中文排序
@RequestMapping(value = "/getBaseCodess", method = RequestMethod.GET) public ModelAndView ...
- python模块:typing
很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,加上Python本身就是一门弱类型的语言,这种现象就 ...
- CSS案例1(导航栏)
文本的装饰 text-decoration 通常我们用于给链接修改装饰效果 使用技巧:在一行内的盒子内,我们设定行高等于盒子的高度,就可以使文字垂直居中. <head> <meta ...