Excel VBAでOracle接続ができなくなった時の解決方法

 

f:id:nanana-blog:20190813205653j:plain

こんばんは。

 

nanana-blog管理人のナナナです

 

ブログを訪問し記事を読んでいただきありがとうございます。

 

私は仕事でExcelのVBAを使ってOracleデータベースからデータを取得しています。

以前使っていたWindows7のパソコンではExcel2013を使用していましたが、パソコンをWindows10に変更したタイミングでOfficeも新しくなりExcel2019を使うことになりました。

 

先日そのExcelでデータを取得しようとしたところ、「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」というエラーが発生してデータ取得ができなくなりました。

本日は「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」のエラーを解決した手順を紹介します。

 

 
 

 

エラーが発生した環境

Windows10 64bit バージョン1809

Excel2019 32bit

Oracle Client 11g 32bit

 

 

 

エラー解決のために試したこと

Oracle Clientの再インストール

Oracle接続時のプロバイダーはOLEDBを使っています。

エラーに「正しくインストールされていない可能性があります。」とあり、OLEDBが正しくインストール出来ていないのかもしれないと思い、Oracle Clientの再インストールをしてみました。

しかしエラーは解消されず、同じエラーが発生しました。

 

OfficeをストアアプリからDesktopアプリに変更

 現在使用しているパソコンのOfficeはプレインストール版で、初期インストールはMicrosoft Storeアプリ版のOfficeがインストールされていました。

これがいけないのかもしれないと思い、Microsoft Storeアプリ版をアンインストールしてDesktopアプリ版をインストールしてみました。

しかし同じエラーが発生しました。

 

プロバイダーを変更

Oracle Provider for OLE DBを使っていたのですが、これをMicrosoft OLE DB Provider for Oracle に変更してみましたが、解決しませんでした。

 

 

 

Oracle接続方法をOLEDBからODBCに変更したら接続ができた

接続プロバイダーをOLEDBからODBCに変更したところ、無事データの取得ができました。

ODBC接続するためにはパソコンに設定が必要です。

 

ODBCの設定

コントロールパネル ⇒ 管理ツール ⇒ ODBC Data Sources(32-bit) をダブルクリックします。

f:id:nanana-blog:20190810004818j:plain

 

システムDSNタブの追加ボタンをクリックします。

f:id:nanana-blog:20190810005111j:plain

 

 Microsoft ODBC for Oracle を選択して完了ボタンをクリックします。

f:id:nanana-blog:20190810220624j:plain

 

 

以下の画面が表示されるので、「データソース名」「ユーザ名」「サーバー」を入力してOKボタンをクリックします。

 

データソース名は適当な名前を付けてください。

ユーザ名はOracleに接続をするユーザIDを入力します。

サーバはtnsnames.oraのサービス名を入力します。

f:id:nanana-blog:20190810220743j:plain

 

Excelの設定

Excelのシートを開き「Alt + F11」をクリックして「Visual Basic for Applications」を開きます。

ツール ⇒ 参照設定 を開きます。

f:id:nanana-blog:20190810225706j:plain

 

 Microsoft ActiveX Data Object 6.1 Library にチェックを淹れます。

f:id:nanana-blog:20190810230558j:plain

 

 VBAのコードでOracleに接続するコードは以下のように書きます。

 

Dim objCON As New ADODB.Connection
Set objCON = CreateObject("ADODB.Connection")
objCON.ConnectionString = "DSN=" & ODBCのデータソース名 & "; UID=" & Oracle接続のユーザID & "; PWD=" & Oracle接続のパスワード
objCON.Open

 

最後に

いかがだったでしょうか。

本日はExcelのVBAを使ってOracleデータベースに接続する方法を紹介しました。

この設定で接続をした後、なぜかOLEDBで接続ができるようになりました。

次回接続時にまた接続できないと困るので、原因が分かるまではODBC接続にしようと思います。

 

 

www.nanana-blog.com

 

www.nanana-blog.com