需求:使用Excel做一个简单的数据库连接工具(类似于java中的AWT和SWING)。

  • 可以查询数据库的表
  • 查询各个表内的数据
  • 插入/修改各个表的数据

步骤:

  1. 先建立一个UserForm作为主界面,并放置按钮,如下图所示。

    然后双击中间的“连接数据库”按钮,进行代码编辑。
Private Sub CommandButton1_Click()Dim strConn As String  Dim dbConn As ObjectDim resSet As ObjectDim db_sid, db_user, db_pass As Stringdb_sid = "edu-server.yds.yd:1521/orcl.yds.yd"db_user = "root"db_pass = "123456"Set dbConn = CreateObject("ADODB.Connection")Set resSet = CreateObject("ADODB.Recordset")strConn = "Provider=OraOLEDB.Oracle.1; user id=" & db_user & "; password=" & db_pass & "; data source = " & db_sid & "; Persist Security Info=True"//清空sheet1   Sheets("Sheet1").Range("1:65536").ClearContentsdbConn.Open strConn//查询当前数据库所有表名Set resSet = dbConn.Execute("select table_name from user_tables")//将表名放入sheet1中For j = 0 To resSet.Fields.Count - 1Cells(1, j + 1) = resSet.Fields(j).NameNext//将Sheet1中的A2:A20(A20写成了固定的,也可以写成变量)放到主界面中,下面是主界面UserForm2.ListBox1.RowSource = "Sheet1!A2:A20"Range("A2").CopyFromRecordset resSet//跳转到主界面UserForm2.Show 0//隐藏当前界面UserForm1.HidedbConn.CloseEnd Sub
  1. 使用UserForm创建一个主界面,并放入一些控件,如下图。

    左侧空白部分是一个ListBox,点击步骤1界面的“连接数据库”按钮后,跳转到当前步骤的界面,并将表明显示到左侧的ListBox中,效果图如下。

    双击“查询”按钮,进入到查询功能编写。
Private Sub CommandButton1_Click()Dim strConn As StringDim strSql As StringDim iCount As IntegerDim whm As WorksheetDim dbConn As ObjectDim resSet As ObjectDim db_sid, db_user, db_pass As Stringdb_sid = "edu-server.yds.yd:1521/orcl.yds.yd"db_user = "root"db_pass = "123456"Set dbConn = CreateObject("ADODB.Connection")Set resSet = CreateObject("ADODB.Recordset")strConn = "Provider=OraOLEDB.Oracle.1; user id=" & db_user & "; password=" & db_pass & "; data source = " & db_sid & "; Persist Security Info=True"//根据鼠标选中的表名拼接sqlstrSql = "select * from " & ListBox1.Value//判断sheet2是否存在If ActiveSheet.Name = "Sheet2" Then//存在就清空sheet2Sheets("Sheet2").Range("1:65536").ClearContentsElse//不存在就创建sheet2Worksheets.Add.Name = "Sheet2"End IfdbConn.Open strConn//执行sqlSet resSet = dbConn.Execute(strSql)//将查询到的数据放入sheet2中For j = 0 To resSet.Fields.Count - 1Cells(1, j + 1) = resSet.Fields(j).NameNextRange("A2").CopyFromRecordset resSetdbConn.CloseEnd Sub

效果图如下。

3.双击“更新”按钮,进入更新功能代码编写。
这里我的想法是将插入和修改放到了一起,点击“更新”按钮会后,先清空当前表
,再将sheet2中的数据全部插入到表中,这样就将插入和修改整合到了一起,但是效率可能会低.

Private Sub CommandButton2_Click()Dim strConn1 As StringDim truncateSql As StringDim insertSql As StringDim dbConn1 As ObjectDim resSet1 As ObjectDim maxRow As IntegerDim maxColumn As IntegerDim db_sid1, db_user1, db_pass1 As Stringdb_sid1 = "edu-server.yds.yd:1521/orcl.yds.yd"db_user1 = "root"db_pass1 = "123456"Set dbConn1 = CreateObject("ADODB.Connection")Set resSet1 = CreateObject("ADODB.Recordset")//获取最大行数maxRow = ActiveSheet.[A65536].End(xlUp).Row//获取最大列数maxColumn = ActiveSheet.[IV1].End(xlToLeft).ColumnstrConn1 = "Provider=OraOLEDB.Oracle.1; user id=" & db_user1 & "; password=" & db_pass1 & "; data source = " & db_sid1 & "; Persist Security Info=True"//拼接清空表sqltruncateSql = "truncate table " & ListBox1.Value//拼接插入sqlinsertSql = "insert into " & ListBox1.Value & " values( "dbConn1.Open strConn1Set resSet1 = dbConn1.Execute(truncateSql)//循环,第一行是表字段名,从第二行开始,j=2For j = 2 To maxRow//取每一行所有有效列的值,拼到插入语句的sql中For i = 1 To maxColumnIf i = maxColumn TheninsertSql = insertSql & "'" & Cells(j, i) & "')"ElseinsertSql = insertSql & "'" & Cells(j, i) & "',"End IfNext//拼完插入语句的sql,就执行Set resSet1 = dbConn1.Execute(insertSql)//将sql重置成最初状态,以便下一行的拼接insertSql = "insert into " & ListBox1.Value & " values( "Next//增删改需要提交事务,这里我不清楚需不需要,写上肯定没错Set resSet1 = dbConn1.Execute("commit")//弹出提示框,提示更新成功!MsgBox prompt:="     更新成功!     "dbConn1.CloseEnd Sub

效果图如下。

  1. 最后一步,在sheet1的ThisWorkBook中写入显示步骤1的连接界面代码。

至此,简单数据库连接功能都已完成,有需要的可以添加,我这个每次执行sql都需要连接数据库,关闭连接,没有优化,可以自行修改。
第一次使用的话需要将sheet2删除!不删可能会报错。

例子放入在了百度网盘,有需要的自取。
链接: https://pan.baidu.com/s/1tCix95JM17FMttFO4sTGMg 提取码: adxf 复制这段内容后打开百度网盘手机App,操作更方便哦

感谢阅读!

Excel VBa 连接Oracle数据库相关推荐

  1. Excel VBA连接ORACLE数据库

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

  2. VBA 连接Oracle 数据库

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

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

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

  4. Excel VBA 链接 Oracle数据库

    标题 前言 准备 第一步 远程数据库的准备 第二步 本地免安装客户端下载 1.下载基本包 1.1 包下载地址 1.2 网盘下载地址 2.配置oracle 网络文件 2.1tnsnames.ora 文件 ...

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

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

  6. quicksearch连接oracle,dos命令下连接oracle数据库表

    Oracle表空间文件损坏后的排查及解决 版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/zergskj/article/details/6303417 ...

  7. ExcelToOracle:批量导入Excel文件到Oracle数据库的自动化工具

    ExcelToOracle:批量导入Excel文件到Oracle数据库的自动化工具 简介 ExcelToOracle 是一个可以批量导入excel到数据库(mysql/oracle/sqlserver ...

  8. 64位系统office Excel 2007导入oracle数据库出错问题解决

    关于64位系统安装office Excel 2007导入oracle数据库出错问题解决 问题描述:在Excel导入数据库的操作过程中,由于公司人员一直使用的是XP和32位的系统,oracle数据库对X ...

  9. 连接oracle的驱动包,连接oracle数据库驱动包

    JDBC与JAVA数据库编程 一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2.  ...

  10. mysql外部表不是预期格式_批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案...

    在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错 ...

最新文章

  1. Keystone创建服务实体报错HTTP401和HTTP500
  2. 详细讲解 移植Uboot到ARMer9开发系统上
  3. [导入]JavaScript 滚动特效代码
  4. Linux Kernel5.10的软中断(softirq)的本质
  5. Shiro 编码/加密
  6. SAP Spartacus Accessibility E2E 端到端测试
  7. mysql数据库的安装和配置文件_MySQL 数据库安装与配置详解
  8. git仓库的推送问题
  9. opacity:0.99;
  10. 遍历二叉树的基本思路
  11. win11配置mysql环境变量保姆级教程
  12. Simphony学习2 安全相关(密码和角色)
  13. echarts(雷达图和中国地图)
  14. composer require fxp/composer-asset-plugin 失败
  15. kettle 学习笔记
  16. 【MATLAB数字图像处理】伪彩色增强
  17. 服务器虚拟化专用ovf模板,开放虚拟化格式(OVF)
  18. (干货)备战2021年软考中级网络工程师-04知识产权与标准化
  19. Object-Oriented Programming Summary Ⅲ
  20. 大数据集群Linux环境配置

热门文章

  1. Axure中继器基础教程(增行、删当前、标记、全部、规则行) Mark
  2. 企业实战——Ansible自动化运维基础知识
  3. 怎么使用计算机扩展,如何导入扩展到慧编程PC并进行使用
  4. 使用奇妙清单:轻松搞定家庭计划事项同步管理
  5. php获取ip所有方式,php获取用户(客户端)真实IP地址的三种方法
  6. android dff播放器,无损音乐解码播放器
  7. 漏型与源型、PNP与NPN
  8. UCOS操作系统——任务管理(一)
  9. IBM推出新功能 加速AI应用
  10. 电脑双网卡访问内外网