Excel VBA 链接 Oracle数据库 | 您所在的位置:网站首页 › Oracle调用远程Oracle数据库 › Excel VBA 链接 Oracle数据库 |
标题
前言准备第一步 远程数据库的准备第二步 本地免安装客户端下载1、下载基本包1.1 包下载地址1.2 网盘下载地址
2、配置oracle 网络文件2.1tnsnames.ora 文件内容
第三步、安装odbc 驱动、配置DSN数据源1 安装odbc 驱动2 配置DSN数据源
第四步 VBA链接数据库测试4.1 设置相应的 Windows 环境变量4.2 新建 vba 文件进行测试
第五步 坑货问题六 奇异现场
前言
由于自己的工作需要(减少自己的工作量),需要通过excel 的 vba 链接oracle 数据库更新数据。查阅了大量的资料不是不全就是你抄我的我抄你的,更本就没有进行验证,导致很多地方不明不白的误人啊。 目前经验证的两种方式: 1、免安装客户端+ odbc 2、安装客户端模式 相比较第二种方式,第一种方式没有那么繁琐不怕配置数据库错误导致需要卸载重装。本文选择第一种方式,方便简单。 说明下:本文中使用的是 oracle 11g + odbc + dsn + excel vba 重点:不建议通过这种方式去链接数据库,会导致你配置的其他 oracle 数据库无法链接,请看最后边的 第五步 准备1、远程数据库的准备:oracle 11g + windows10 2、本地免安装客户端下载:两个包 instantclient-basic 和 instantclient-odbc 3、安装odbc 驱动、配置DSN数据源 4、链接数据库测试 第一步 远程数据库的准备一般来说,你要链接了肯定都是有相应的数据库已经存在才会去链接啊, 本文中链接的远程数据库是在 vm 虚拟机中模拟的,在windows 10上安装的oracle 11g 数据库. 第二步 本地免安装客户端下载 1、下载基本包本地需要准备两个包 instantclient-basic 和 instantclient-odbc 这两个包都来自于 oracle 官网,选择 12-1 这个版本的,11-2 这个版本不知道为何在测试的时候配置DSN数据源的时候始终无法使用。 下载地址在下面 下载地址:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 由于是国外的网站需要特殊访问才行,很多人又在CSDN上传了但是需要付费才能下,附上网盘地址: 链接:https://pan.baidu.com/s/1yFhdrkYy7w9qYQQzxfsZVw 提取码:1234 下载后将两个包解压到同一个目录下,我是解压到 C:\other\instantclient_12_1,记住这个位置 需要配置一个网络文件 tnsnames.ora ,这个文件的作用是让本地客户端知道需要访问的数据库地址和相关信息 在刚才解压的那两个包的目录下新建 “network\admin” 这个目录,将tnsnames.ora 这个文件放在这下面 这个内容拷过去将下面图片的地方改为你自己的内容就行了 # tnsnames.ora Network Configuration File: D:\app\zico\product\11.2.0\dbhome_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. ORCL_win10 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.129)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )打开我们电脑的数据源【我是win10 64位的】,可以看到目前的驱动程序没得和oracle 相关的
为啥要配置这玩意?其实是因为我们没有安装相应的客户端,excel 只有先从windows 的环境中查找是否有相应的驱动 同样的在 ODBC数据源管理程序(64位)这里,点击 用户 DSN ⇒ 添加
1、path 环境变量后边加上客户端文件地址:C:\other\instantclient_12_1 2、TNS_ADMIN 新建这个变量,值根据自己的情况按照图示填写 3、新建 NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 这个变量是为了防止 oracle 中文变成乱码 经过上面的步骤就可以在vba 中进行数据库信息查询测试 新建一个excel 文件打开顶部的 开发工具 ==》插入 ==》按钮 ==》新建相应的 宏 如果没得这个选项就是你的 excel 的 开发工具 功能未开启,请自行百度 链接字符串说明: cnn.Open "Driver={Oracle in instantclient__12_1};Dbq=tnsnames.ora中数据库别名或者tnsnames.ora中整个串;User Id=数据库用户名;Password=密码;" {Oracle in instantclient__12_1} : 就是你配置DSN的时候添加的数据源驱动的名字; Dbq:tnsnames.ora中数据库别名或者tnsnames.ora中整个串; User Id:数据库用户名; Password:密码
配置第四步的环境变量后,会导致无法监听到其他数据库。 注意事项: 不能在已经安装了clinet 的上面在设置环境变量,使用 plsql 链接其他数据库的时候就会出现 直接去找 我们配置的DSN 数据源导致 无法链接其他数据库 删除环境变量就好了
由于我的电脑由于工作需要在本机上安装了 oracle 11g (完整版)和 client(客户端), 经过上面配置基本文件、增加环境变量、安装驱动、配置DSN 数据源 后,我怕会影响到自己的数据库就将环境变量删除、dsn数据源删除 ,但是我的 vba 还是能通过之前配置的环境变量(客户端设置)进行链接,下面记录下相关环境情况说明 1、本地client 我的电脑上安装了两个client ,一个用于 plsql 链接 、一个用于测试这次的vba 链接,目录分别为:D:\APS\client\instantclient_11_2、 D:\APS\client\other\instantclient_12_1 2、环境变量: 环境变量设置的是 ORACL_HOME = D:\APS\client\other\instantclient_12_1 PATH 新增 : D:\APS\client\other\instantclient_12_1 TNS_ADMIN = D:\APS\client\other\instantclient_12_1\network\admin3、数据源和驱动 安装的是 11.2 的驱动并配置了DSN 数据源 4、奇异问题 设置这后测试vba 链接数据库没得问题,为了安全我删除了以上配置,没有删除odbc 驱动。 但是我的 vba 还是能进行链接数据库。 我再次操作 vba 发下还是能链接数据库,这里就很让人疑惑了。 我将 tnsnames.ora 下的配置文件进行修改,vba 就无法链接,只有 vba 中数据库名和 tnsnames.ora 文件中的 别名对应的时候又是可以链接的 说明系统已经将之前设置的环境变量记住了,但是我在系统已经删除了啊,我甚至在另一台虚拟机上进行测试,唯独没有 配置 DSN 数据源,就会报错 未发现数据源 对于这个问题,特地在这里记录下,实在是想不明白为甚么了,还希望大家给与解答下 |
CopyRight 2018-2019 实验室设备网 版权所有 |