Excel VBA 連接各種數據庫(二) VBA連接Oracle數據庫


(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM