1

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 (3​​2 ビット) (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 ドライバーに関する私の疑いは正しいと仮定します。

4

2 に答える 2