Oracle データベースに接続してクエリを実行する VBA (Excel) マクロがあります。Windows 7 で実行すると、次の接続文字列が機能します。
Driver={Microsoft ODBC for Oracle}; Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=xxx))(CONNECT_DATA=(SERVICE_NAME=name))); Uid=username;Pwd=password;
私とこの Excel テンプレートの残りのユーザーは、32 ビットの Office 365 を使用する Windows 10 (64 ビット) に移行しています。残しておきたい機能。また、Microsoft ドライバーが非推奨になっていることも知っています (そして、そのままでは動作しません) ので、今こそ変更するときです。
私は以下をインストールしています:
- Oracle インスタント クライアント 12.2 (32 ビット)
- Instant Client 12.2 (32 ビット) 用の Oracle ODBC ドライバ
- Visual Studio 2019 (32 ビット) (Oracle ドライバーが上位互換性があると仮定)
私はそれを確認しました:
- PATH の最初の値は、Instant Client 12.2 がインストールされているディレクトリに設定されます。
- ORACLE_HOME が同じディレクトリに設定されている
- ORACLE_HOME 変数は 1 つだけです
- ドライバー (instantclient_12_2 の Oracle) は、32 ビット ODBC 管理ツールで表示されます。
次の接続文字列をさまざまに調整してみましたが、うまくいきませんでした
Driver={Oracle in instantclient_12_2}; Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=xxx))(CONNECT_DATA=(SID=name))); Uid=username;Pwd=password
「Server」の代わりに「Data Source」、「SID」の代わりに「SERVICE_NAME」、そして両方を同時に使用してみました。また、Excel 365 の内部 ODBC 接続で文字列を試しました。私が受け取り続けるエラーは次のとおりです。
ORA-12560: TNS: プロトコル・アダプタ・エラー
Windows 10 では tnsname.ora ファイルが必要であるという疑いが生じ始めています。tnsnames.ora ファイルを使用せずに Windows 10 32 ビット OBDC 接続を作成したり、Oracle ドライバーをインストールする以外に他のアクションを実行したりすることはできますか?ユーザーのマシン?
編集: リモートでアクセス可能な tnsnames ファイルを作成しました。接続文字列がそのファイルを使用し、TNS_ADMIN 環境変数が設定されている場合、接続します。VBA 自体で tnsnames ファイルからの正確なテキストを使用すると、認識されません (TNS アダプター エラー)。少なくとも VBA については、tnsnames.ora ファイルを必要とする Oracle ドライバーに関する私の疑いは正しいと仮定します。