Excel VBAでOracle接続ができなくなった時の解決方法
こんばんは。
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) をダブルクリックします。
システムDSNタブの追加ボタンをクリックします。
Microsoft ODBC for Oracle を選択して完了ボタンをクリックします。
以下の画面が表示されるので、「データソース名」「ユーザ名」「サーバー」を入力してOKボタンをクリックします。
データソース名は適当な名前を付けてください。
ユーザ名はOracleに接続をするユーザIDを入力します。
サーバはtnsnames.oraのサービス名を入力します。
Excelの設定
Excelのシートを開き「Alt + F11」をクリックして「Visual Basic for Applications」を開きます。
ツール ⇒ 参照設定 を開きます。
Microsoft ActiveX Data Object 6.1 Library にチェックを淹れます。
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接続にしようと思います。