(2019.08.02更新)本文内容在Windows10 企业版64bit下测试通过

本文主要内容:

  1. Oracle环境配置
  2. ODBC驱动设置、第三方驱动下载
  3. VBA连接Oracle连接方法
  4. Oracle10g官方免账号下载地址
  5. (2020年1月10日更新)关于连接数据库的问题

系统环境:

  • Windows 7 64bit
  • Excel 2016 64bit
  • Oracle_win64_11gR2_client完整客户端(64bit)

1. VBA连接Oracle前的环境配置

如果想连接本地数据库,必须先安装Oracle服务器端。

我这里使用的是内网其他电脑上的Oracle数据库,这里只安装Oracle客户端就可以。

1.1 安装Oracle完整版客户端

网上应该有各种关于VBA连接Oracle的帖子了,不过之前我按他们说的尝试,都无法连接成功,可能是操作系统版本的问题。以下介绍我自己尝试成功的两种办法:

从Oracle官网的数据库下载列表中,选择对应自己操作系统版本的完整版客户端下载,需要注册Oracle网站的用户(这里我使用的是11G64bit版本)

下载好以后,解压,然后点击 client\setup.exe 安装程序。在步骤1/6中,选择“管理员”,在步骤4/7中,可能会提示你Environment variable:"PATH" 项目  状态失败,不用管,选择忽略即可。

安装完毕后进入安装目录的\Administrator\product\11.2.0\client_1\network\admin\tnsnames.ora中设置服务,也可以通过 Net Manager工具设置

1.2 使用连接工具测试连接

数据库配置好之后,使用PLSQL Developer 或者Navicat等连接工具,测试一下数据库是否可以正常登陆,可以正常使用的话,再进行下面这一步。

如果无法正常登陆,请返回去重新检查连接服务设置。

PS:数据连接工具推荐使用Navicat,可以同时连接不同的数据库,非常方便。

我常用的是11.0.16版本   下载地址   提取码: s5kt

1.3 配置ODBC驱动

进入“控制面板”-》“管理工具”-》“数据源”。点击“添加”,选择和1.1中对应版本的Oracle ODBC驱动(我这里是11.02.00.01),点击“完成”,然后会弹出设置界面如下:

DataSourceName: 该ODBC连接的名称

TNS Service Name:在1.1中你设置的连接名称,如果为空,则说明客户端设置出错,应重新检查是否正确设置了tnsname.ora

User ID:登录数据库的用户名

填写完以上三个选项后,可以使用Test Connection测试一下连接是否正常,测试正常的话进入下一步。

特别提醒:

可能你的本地有其他依赖Oracle的软件,如果产生冲突,可以同时安装32bit和64bit的客户端解决。

我这里的情况是本地软件必须使用32bit的,那么我就先安装了64bit的完整客户端,然后安装了32bit的简化版客户端,这样就互不影响了

友情提醒:

如果你安装的客户端位数和操作系统不同,是没法正常配置ODBC数据源的。如果你不想装两个版本的客户端,也可以使用第三方驱动。

第三方驱动我测试成功的是 devart odbc driver for oracle 不过这玩意要149刀,不花钱的话只能试用30天。

1.4 配置VBE环境

在Excel这边,需要先在VBE中启动数据库连接支持。按下Alt+F11打开VBE,在菜单栏选择“工具”-“引用”,在弹出的引用窗口中,找到"Microsoft ActiveX Data Objects 6.1 Library"和"Microsoft ActiveX Data Objects Recordset 2.8 Library",把前面的框勾选上,点击确定即可。 (如果不是这两个版本,则选择一个版本号最高的勾选即可)


2. VBA连接Oracle

在按照上述步骤配置了环境支持后,就可以在VBA中使用代码连接Oracle了。

首先需定义连接对象:

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

这里也可以简写为:

Dim conn As New ADODB.Connection

连接数据库

    strConn = "Driver={Oracle in OraClient11g_home1};Dbq=TNS服务名;Uid=数据库登录账户;Pwd=数据库登录密码;"
conn.Open strConn '打开数据库

连接字符串ConnectionString中的各个参数应该很明了,就不一一解释了。注意这里的driver 设置中必须正确填写驱动的版本号,在ODBC界面可以明显看到版本号及名称。

上一段代码也可以简写为

conn.Open "Driver={Oracle in OraClient11g_home1};Dbq=TNS服务名;Uid=数据库登录账户;Pwd=数据库登录密码;" '打开数据库

再次提醒,Driver变量的值是必须要和数据源中添加的新数据源一致的,否则会提示找不到数据源。

至此,数据库连接成功!

可以使用连接对象的State属性和Version属性查看数据库状态和版本(检查是否连接成功)

MsgBox("连接成功!" & vbCrLf & "数据库状态:" & conn.State & vbCrLf & "数据库版本:" & conn.Version)

最后关闭数据库连接

conn.Close
Set conn = Nothing

整个过程的完整代码如下:

Sub 连接Oracle数据库()
  '1. 引用ADO工具
  '2. 创建连接对象
  Dim conn As New ADODB.Connection
  '3. 建立数据库的连接
  strConn ="Driver={Oracle in OraClient11g_home1};Dbq=TNS服务名;Uid=数据库登录账户;Pwd=数据库登录密码;"
  conn.Open strConn
  MsgBox ("连接成功!" & vbCrLf & "数据库状态:" & conn.State & vbCrLf & "数据库版本:" & conn.Version)
  conn.Close
  Set conn = Nothing
End Sub 

至此,Oracle的连接方法就结束了,至于使用VBA操作数据库,可以参考我的上一篇文章

Excel VBA 连接各种数据库(一) VBA连接MySQL数据库

(2020年1月10日更新)——————————————————

如果出现无法连接数据库的情况,很有可能是因为没有配置ODBC数据源,VBA要求每个数据库都需要单独配置一个数据源。


3. Oracle10g下载资源分享

如果要连接Oracle,需要安装完整版的客户端

官网下载这些软件,你需要一个OTN免费帐号,不过如果通过迅雷进行下载,就不用登陆OTN了:(直接复制下载链接即可)

Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit)

http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip
http://download.oracle.com/otn/nt/oracle10g/10201/10201_client_win32.zip
http://download.oracle.com/otn/nt/oracle10g/10201/10201_clusterware_win32.zip
http://download.oracle.com/otn/nt/oracle10g/10201/10201_gateways_win32.zip


Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (x64)

http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip
http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_client.zip
http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_clusterware.zip


Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Linux x86

http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux32.zip
http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux32.zip
http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux32.zip


Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Linux x86-64

http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux_x86_64.cpio.gz
http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux_x86_64.cpio.gz
http://download.oracle.com/otn/linux/oracle10g/10201/10201_clusterware_linux_x86_64.cpio.gz
http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux_x86_64.cpio.gz


Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for AIX5L

http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_database.cpio.gz
http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_client.cpio.gz
http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_cluster.cpio.gz
http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_gateways.cpio.gz


Oracle Database 10g Release 2 (10.2.0.2) Enterprise/Standard Edition for Solaris Operating System (x86)

http://download.oracle.com/otn/solaris/oracle10g/10202/10202_database_solx86.zip
http://download.oracle.com/otn/solaris/oracle10g/10202/10202_client_solx86.zip
http://download.oracle.com/otn/solaris/oracle10g/10202/10202_clusterware_solx86.zip


Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Solaris Operating System (x86-64)

http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_database_solx86_64.zip
http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_client_solx86_64.zip
http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_clusterware_solx86_64.zip

Excel VBA 连接各种数据库(二) VBA连接Oracle数据库的更多相关文章

  1. 从ArcGIS连接Oracle数据库,并将Oracle数据库注册到ArcGIS Server

    环境说明 客户端机器环境: ① Win7 SP1 64位 ② ArcGIS Desktop 10.2 32位 ③ ArcGIS Server 10.2 64位 服务器环境 ① Windows Serv ...

  2. Oracle命令(二):Oracle数据库几种启动和关闭方式

    一.Oracle数据库几种启动方式 1.startup nomount 非安装启动,这种方式下启动可执行:重建控制文件.重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进 ...

  3. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  4. Oracl数据库管理方面的资料(查询sga,查看oracle数据库名称sid,查看oracle数据库名称,查看表空间,修改表空间名称)

    显示Oracle sga相关信息: SQL> show sga Total System Global Area 105978600 bytes Fixed Size 453352 bytes ...

  5. 从服务器将Oracle数据库导出到本地Oracle数据库的方法

     1.将服务器上的Oracle数据库导入到本地 在CMD模式下执行以下命令:   exp username1/password@服务器端数据库 file=本地硬盘:/文件名.dmp   例如: exp ...

  6. qt连接oracle数据库

    由与qt开源版本没有提供oracle数据库驱动,需要自己根据源代码来手动编译oracle驱动. 经过近三天的折腾,终于成功编译oracle驱动,连接到数据库 ps:期间经过各种失败疼苦迷茫.现在终于完 ...

  7. python——连接Oracle数据库

    前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...

  8. [转]oracle10客户端PL/SQL Developer如何连接远程服务器上的oracle数据库

    时间:2013年8月21日 前提条件:假设你已经安装好了oracle和PL/SQL Developer,知道远程服务器的IP和数据库端口,知道远程服务器上的oracle数据库名和密码 如何用PL/SQ ...

  9. 远程连接Oracle数据库

    ylbtech-Oracle:远程连接Oracle数据库  所谓远程连接Oracle数据库,是指Oracle数据库服务器和Oracle客户端分别安装在2台电脑上,我们使用Oracle客户端来连接在另一 ...

  10. Navicate Premium连接Oracle数据库报错

    Navicat Premium连接MySQL数据库没有问题,在连接Oracle数据库的时候报错,提示:ORA-28547:connection to server failed,probable Or ...

随机推荐

  1. MySQL 5.7版本 sql_mode=only_full_group_by 问题

    具体错误: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in ...

  2. Elasticsearch-6.7.0系列(三)5601端口 kibana——ES的UI界面

    https://artifacts.elastic.co/downloads/kibana/kibana-6.7.0-linux-x86_64.tar.gz      Kibana下载 有了elast ...

  3. 二叉树遍历(flist)(二叉树,已知中序层序,求先序)

    问题 C: 二叉树遍历(flist) 时间限制: 1 Sec  内存限制: 128 MB提交: 76  解决: 53[提交][状态][讨论版][命题人:quanxing][Edit] [TestDat ...

  4. 怎么安装Scrapy框架以及安装时出现的一系列错误(win7 64位 python3 pycharm)

    因为要学习爬虫,就打算安装Scrapy框架,以下是我安装该模块的步骤,适合于刚入门的小白: 一.打开pycharm,依次点击File---->setting---->Project---- ...

  5. 使用Oracle BBED修改Oracle11g数据库实例名称

    by 蔡建良 2019-2-19 数据库名称存在SYSTEM01.DBF表空间,所以先查出你要修改的数据库的DBID和DBNAME. 一. 查询数据库实例名称 加载ORCL实例数据库的SYSTEM01 ...

  6. Docker使用Link与newwork在容器之间建立连接

    一,使用 --link容器互联 docker 默认使允许container 互通的(通过-icc=false 关闭互通)同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地 ...

  7. fontFamily 'Ionicons' is not a system font and has not been loaded through Expo.Font.loadAsync的问题

    import * as React from "react";import { Provider } from "mobx-react/native";impo ...

  8. Nginx——基本操作

    1.获得root用户权限 如果鉴定失败多试几次 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install ...

  9. ReentrantLock原理

    ReentrantLock主要利用CAS+CLH队列来实现.它支持公平锁和非公平锁,两者的实现类似. CAS:Compare and Swap,比较并交换.CAS有3个操作数:内存值V.预期值A.要修 ...

  10. JavaScript数组方法--pop、shift、unshift

    其实还有一个方法push,应该放在一起说的,问题是他跟concat跑了,那只剩下这哥仨了. pop:pop()方法从数组中删除最后一个元素,并返回该元素的值.此方法更改数组的长度.捎带一下push,p ...