设为首页 收藏本站
查看: 1263|回复: 0

[经验分享] Excel、VBA与MySQL交互

[复制链接]

尚未签到

发表于 2017-12-11 21:24:50 | 显示全部楼层 |阅读模式
  本文主要涉及:


  • VBA中的MySQL环境配置
  • VBA连接MySQL数据库
  • VBA读写MySQL数据
  • 在Excel中连接MySQL数据库及数据读写
  系统环境:


  • Windows 10
  • Excel 2013
  • XAMPP。其中集成的数据库是MariaDB 10.1.13(如果不懂MariaDB为何物,可把它当成是MySQL。事实上它的使用和MySQL也几乎完全一致)
1. VBA连接MySQL前的环境配置
  系统中必须先安装有MySQL服务,这个就不多说了。可以选择使用官方安装包,或者使用PHP集成环境中的数据库都可以。

1.1 启用脚本支持
  在使用前,需要先在VBE中启动数据库连接支持。按下Alt+F11打开VBE,在菜单栏选择“工具”-“引用”,在弹出的引用窗口中,找到"Microsoft ActiveX Data Objects 6.1 Library"和"Microsoft ActiveX Data Objects Recordset 6.0 Library",把前面的框勾选上,点击确定即可。

1.2 安装MySQL ODBC 连接服务
  下载地址:Download Connector/ODBC
  选择操作系统及系统版本,下载对应的MSI文件安装即可。
  
这里应当注意的是,在下载安装ODBC连接器时,要选择和你的数据库相同位数的版本,而不是系统位数,否则安装完后依然会提示找不到数据库驱动。
  
(我试过在64bit的系统上装的64bit的connector,装完后连接提示找不到驱动,然后装上32bit的connector才成功)

1.3 添加ODBC数据源
  打开“控制面板”-“管理工具”-“ODBC 数据源”,在弹出的窗口中的“用户DSN”选项卡右侧,选择“添加”,在新数据库源中会出现两个MySQL驱动,分别为“MySQL ODBC 5.3 ANSI Driver”及"MySQL ODBC 5.3 Unicode Driver",很明显两者的区别在于编码标准。我选择的是Unicode版本。选中其中一个,点完成即可
  1.1和1.2的配置顺序可以随意,但1.3必须在1.2之后,否则在ODBC数据源中添加新数据源时,是找不到MySQL选项的。

2. VBA连接MySQL
  在按照1.1步骤配置了环境支持后,就可以在VBA中使用代码连接MySQL了。
  先定义连接对象
  

Dim conn as ADODB.Connection  
Set conn = new ADODB.Connection
  

  连接数据库
  

conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=localhost;DB=test;UID=root;PWD=root;OPTION=3;"  
conn.Open
  

  连接字符串ConnectionString中的各个参数应该很明了,就不一一解释了。最后一个OPTION,按MySQL官方的说法是用于指定ODBC Connector的工作方式的,但是我在他们官方文档中并没有找到有哪个选项是的值对应是3的。所以这里只有照写了。
  
这里可以看到,Driver变量的值是必须要和数据源中添加的新数据源一致的,否则会提示找不到数据源。
  致此,数据库连接成功!
  可以使用连接对象的State属性和Version属性查看数据库状态和版本(检查是否连接成功)
  

MsgBox("数据库状态:" & conn.State & vbCrLf & "数据库版本:" & conn.Version)  

  最后关闭数据库连接
  

conn.Close  
Set conn = Nothing
  

3. VBA读写MySQL数据表

3.1 读取MySQL数据到Excel
  代码如下:
  

Sub db()  Dim conn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Set conn = New ADODB.Connection
  Set rs = New ADODB.Recordset
  

  conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=localhost;DB=test;UID=root;PWD=root;OPTION=3;"
  conn.Open
  

  rs.Open "select * from `test`", 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 写入数据到MySQL
  其实写入数据,只需要把上例中的SQL语句改成UPDATE或者INSERT即可,就不多说了。

4. 在Excel中直接操作MySQL
  MySQL推出了一个Excel插件,用于直接在Excel操作MySQL数据库。
  
首先需要下载:Download MySQL for Excel
  下载完运行安装即可。
  然后打开(重启)Excel,打开时可能会询问是否添加该插件。打开后,在菜单栏点开“数据”,即可在右侧看到有个MySQL for Excel的东西。点开它,就会出现本地的MySQL数据库。
DSC0000.png

  可以右键单击其中的数据库,编辑连接信息:
DSC0001.png

  或者双击打开数据库目录,依然打开数据表目录,再选中其中一个数据表时,在下方会出现三个选项,分别是导入MySQL数据、编辑MySQL数据、添加MySQL数据。如果选中导入或编辑,都会在Excel中新增一个工作表用于操作数据,如果是选择添加,则不会。至于具体的操作,就都是傻瓜式的了,这里就不再多讲了。
DSC0002.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423146-1-1.html 上篇帖子: Spring+SpringMVC+MyBatis+easyUI整合进阶篇(七)一次线上Mysql数据库崩溃事故的记录 下篇帖子: 数据库 之MySQL 简单教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表