作者:iamlaosong

通过VBA连接Oracle数据库查询数据,最常用的是OleDB方法。这个方法一般有两种OleDB连接驱动方法,一种是用微软的驱动,另一种用Oracle驱动,Provider需要根据实际情况修改。最近常有人问我如何进了连接,这儿对我使用的方法做个记录。

1、Microsoft公司提供的OleDB驱动MSDAORA,据说只支持32位系统,我在32位系统下使用没有问题,其连接字符串如下:
    cnnStr="Provider=MSDAORA;Data Source=dataSource;User Id=userid;Password=password;"
    或
    cnnStr="Provider=MSDAORA.1;Data Source=dataSource;User Id=userid;Password=password;"

其中MSDAORA.1是驱动的名称,“.1”据说是版本号,是COM的命名规则的一个约定格式,可以不写;dataSource是Oracle客户端配置的服务名,就是tnsnames.ora中配置的名称。

驱动程序msdaora.dll放在C:\Program Files\Common Files\System\Ole DB文件夹下面。

实际例子:

Set cnn = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")
    cnnStr = "Provider=msdaora;Data Source=dl580g9;User Id=emssxjk;Password=emssxjk;"
    cnn.Open cnnStr

或者直接写连接串:

cnn.Open "Provider=msdaora;Data Source=dl580g9;User Id=emssxjk;Password=emssxjk;"

2、Oracle公司提供的OleDB驱动,支持32bit与64bit,需要安装Oracle Data Provider for OLE DB,Oracle客户端应该带了。我的电脑安装的简易客户端也有这个驱动,驱动程序路径是C:\Oracle\ora90\BIN\OraOLEDB.dll,其连接字符串如下:
    cnnStr="provider=OraOLEDB.Oracle;Persist Security Info=False;User ID=UserName;Data Source=DataBase;Extended Properties='';Password=Password"
    或
    cnnStr="provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=UserName;Data Source=DataBase;Extended Properties='';Password=Password"

形式和内容都和上面差不多,其中的默认项可以不写(),各个参数的顺序也不重要,只要把MSDAORA.1换成OraOLEDB.Oracle.1就行了。

如果使用中发现无法连接,报实时错误3706:未找到提供程序,可以检查一下驱动个文件是否存在。

实际例子:

Set cnn = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")
    cnnStr = "Provider=OraOLEDB.Oracle;Data Source=dl580g9;User Id=emssxjk;Password=emssxjk;"
    cnn.Open cnnStr

3、最后说一下通过ODBC连接。其实和前面的OleDB连接差别不大。先去ODBC数据源管理器中看下驱动程序的名称,然后写好连接串就行了。连接串如下:

cnnStr = "Driver={Microsoft ODBC for Oracle};Dbq=dataSource;UId=UserName;Pwd=Password;"

实际例子:

Set cnn = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")
    cnnStr = "Driver={Microsoft ODBC for Oracle};Dbq=DL580G9;UId=emssxjk;Pwd=emssxjk;"
    cnn.Open cnnStr

也可以用Oracle的驱动程序:

cnnStr = "Driver={Oracle in OraHome90};Dbq=DL580G9;UId=emssxjk;Pwd=emssxjk;"

或者

cnnStr = "Driver={Oracle in OraHome90};Dbq=DL580G9;User Id=emssxjk;Password=emssxjk;"

其中{Oracle in OraHome90}是本人电脑上安装的简易客户端带的驱动程序,如下图所示:

ODBC数据源管理器的路径是“控制面板”--系统和安全--管理工具--数据源(ODBC),如下图:

【VBA研究】Excel连接Oracle的几点说明相关推荐

  1. Excel使用经验——Excel连接Oracle,发生3706错误的解决办法

    今天真是遇到了一个奇葩问题,花了我四五个小时才解决. 本来昨天写好.调试好的Excel日报功能,今天不能用了. 发生了3706错误(运行时错误'3706',未找到提供程序,该程序可能未正确安装). 于 ...

  2. EXCEL 连接 ORACLE 查询数据到表格 中文乱码 中文变成?

    1.安装odbc Cmd命令提示符 右键管理员方式打开 D: Cd D:\excel-oracle\instantclient_11_2 odbc_install.exe 若出现 Oracle ODB ...

  3. vba 用adodb连接mysql_【VBA研究】Excel VBA利用ADODB访问数据库使用小结

    [转自] http://blog.csdn.net/iamlaosong/article/details/18043433 作者:iamlaosong ▲连接Oracle数据库 Set cnn = C ...

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

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

  5. VBA 连接Oracle 数据库

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

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

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

  7. 【VBA研究】用VBA取得EXCEL任意列有效行数

    作者:iamlaosong 用VBA对Excel文件进行处理的时候,关键字段的列号编程时往往是不知道的,需要通过参数设定才能知道,因此,我们编程的时候,就不能用这样的语句取有效行数: lineno = ...

  8. 【VBA研究】用VBA取得EXCEL有效行列数方法比较

    作者:iamlaosong 我常用下面方式取得有效行数: maxrow=sheets(1).[A65536].End(xlUp).Row 这一句的含义是从A列65536行开始向上找,碰到第一个非空单元 ...

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

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

最新文章

  1. 不能跳过的《程序员的职业素养》(The Clean Coder)中的一个章节
  2. UML之交互图(协作图和顺序图)
  3. bzoj3224: Tyvj 1728 普通平衡树(splay)
  4. 电子书下载:C# 4.0 How To
  5. android studio turn off hyperv,Android Studio 无法运行模拟器
  6. 软件项目开发过程中主要遇到的核心问题小结
  7. java读取文件跳过_在Java中读取文本文件-为什么跳过行?
  8. vue怎么vw布局好用_vue cli3项目的pc自适应布局_vw
  9. 变换例题_矩阵的初等变换
  10. ora-01489 字符串连接的结果过长 解决方案
  11. C++---之Arraylist
  12. 不是我吹!超级全面的权限系统设计方案面世了
  13. 计算机主板 华硕 游戏用,华硕Z390-A大师主板,带你畅享极致游戏体验-华硕主板bios设置...
  14. 【重要更新】TX Text Control ActiveX X16发布 | 附下载
  15. 微商软文发布方法有哪些?文案怎么编辑?
  16. 神奇的量子世界——量子纠缠(Matlab实现)
  17. Linux系统之查找文件和打包压缩文件
  18. C++模板的特化与偏特化
  19. 一键式代购服务让,省时省力省心
  20. Mysql服务器安装步骤

热门文章

  1. 蛋白质相互作用位点标签的获取方法
  2. 又一个项目要结项了,项目报告PPT内容节选点纪念一下
  3. devexpress html编辑器,DevExpress使用教程:富文本编辑器RichEditControl
  4. LINUX uptime命令解读
  5. Ubuntu更新-换源问题
  6. m基于simulink的麦克纳姆轮Back-Stepping控制系统仿真
  7. C语言图书馆如何添加图书,如何使用C语言编写图书馆管理系统?
  8. ground truth 理解
  9. 12.zabbix 自定义模板
  10. python极简应用_30 个极简Python代码,拿走即用(真干货)