本文主要涉及:

  1. VBA中的SQL Server环境配置
  2. VBA连接SQL Server数据库
  3. VBA读写SQL Server数据
  4. 如何安装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数据库的更多相关文章

  1. SQL Server数据库邮件配置

    一.数据库邮件介绍 数据库邮件是从SQL Server数据库引擎中发送电子邮件的企业解决方案,通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中可以包含查询结果,还可以包含来自网络中任何 ...

  2. SQL Azure (14) 将云端SQL Azure中的数据库备份到本地SQL Server

    <Windows Azure Platform 系列文章目录> 注意: 1.只有SQL Server 2012 CU4及以上版本才支持本章内容 2.当你的数据库文件很大时,建议优化以下内容 ...

  3. SQL Server 数据库项目

    ylbtech-.NET Framework: SQL Server 数据库项目 SQL Server 数据库项目 类型:SQL Server 用于创建 SQL Server 数据库的项目 1. 新建 ...

  4. SQL SERVER 数据库邮件配置

    1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方案.通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中 ...

  5. SQL Server 数据库定时自动备份

    原文:SQL Server 数据库定时自动备份 SQL Server 数据库定时自动备份——每天定时备份,保留前8天的备份 利用SQL Server代理新建作业来定期备份 1)在数据库库的[SQL S ...

  6. vs连接服务器sql server数据库 web.config和代码

    方法一.在web.config里面配置,后连接数据库 (1)web.config文件:加在<connectionStrings>和</connectionStrings> 之间 ...

  7. JDBC连接sql server数据库及其它

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...

  8. Sql Server 数据库之间如何进行跨网远程连接访问

    场景说明 现在有一台A电脑和一台B电脑,两台电脑都安装了Sql Server数据库,两台电脑不在一个局域网(我们考虑的是不同网络的两台数据库连接),比如A电脑在公司,B电脑在家里,现在我要在家里用B电 ...

  9. JDBC连接sql server数据库的详细步骤和代码

    JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...

随机推荐

  1. TRUNCATE - 清空一个表

    SYNOPSIS TRUNCATE [ TABLE ] name DESCRIPTION 描述 TRUNCATE 快速地从一个表中删除所有行.它和无条件的 DELETE 有同样的效果,不过因为它不做表 ...

  2. 创建maven项目的时候:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 from any of the configured repositories. 解决办法

    问题: https://yq.aliyun.com/ziliao/364921      尝试没成功. https://www.aliyun.com/jiaocheng/296712.html   尝 ...

  3. python_django_urls模块与views模块请求访问过程

    diango接收到web请求后的在urls模块与views模块进行的过程操作: 匹配过程: urls拿到网址,在项目级urls中匹配,若在urlpatterns中存在,则跳转到应用级urls中匹配,若 ...

  4. vue生态系统之vuex

    一.webpack生成项目 1.webpack 在需要建立项目的目录中进行初始化项目 E:\vueProject>vue init webpack vuexpj ? Project name v ...

  5. svg圆环缓冲动画

    代码如下 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...

  6. 修改Ubuntu16.04默认主题标题栏的颜色

    默认主题为Ambiance: sudo gedit /usr/share/themes/Ambiance/gtk-3.0/gtk-main.css 将: @define-color dark_bg_c ...

  7. Intervals POJ - 3680

    传送门 给定数轴上n个带权区间$[l_i,r_i]$,权值为$w_i$ 选出一些区间使权值和最大,且每个点被覆盖次数不超过k次. 离散+拆点,最大费用可行流(跑到费用为负为止) 第一部分点按下标串起来 ...

  8. NX二次开发-UFUN创建圆柱UF_MODL_create_cyl1

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  9. 【latex】latex基础

    文档边距.间距调整 边距调整 \usepackage{geometry} %设置页边距的宏包 \geometry{left=3.0cm,right=2.5cm,top=2.5cm,bottom=2.5 ...

  10. HDU6440 Dream 2018CCPC网络赛-费马小定理

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  给定一个素数p ...