VBA(マクロ)でOracle Databaseに接続する方法【オラクルデータベース接続】
VBA(マクロ)でOracle DatabaseにDB接続する方法がわからない人
Oracle DatabaseのデータをExcelやAccessに取り込みたい人
Oracle DatabaseのデータをVBAで処理したい人向けに書いています。
本記事の内容
を紹介します。
会社の業務自動化やデータ分析等でOracleのデータベースからデータを取得することがあると思います。
定期的な業務はVBAで自動的にデータ取得して、業務時間を大幅に短縮ですことが期待できます。
ぜひご活用ください。
VBA(マクロ)からOracle Databaseに接続する方法
本記事でVBAからOracle Databaseに接続するためには以下の2つの設定が必要です。
・VBAの参照設定
それでは、以下で設定方法を説明します。
Oracle Clientインストール
本記事ではOracle Provider for OLE DBを使用したOracle接続方法を行います。
Oracle Provider for OLE DBはOracle Clientをインストールすることで使用可能になります。
Oracle Clientのインストールはこちらから可能です。
OfficeのソフトとOracle Clientのビット数(32bit Or 64bit)は一致するようにインストールしてください。
最近Oracle Clientのインストールで停止したままインストールが進まない現象がありました。もし起こった場合は以下のリンクをご確認ください。
→「【Oracle Database Client 12c】インストール途中で停止する解決方法」
VBAの参照設定
参照設定からADO(ActiveX Data Objects)を使用することでExcelやAccess等のOfficeソフトからOracle Databaseに接続することができます。
まず、ADOを使用するための参照設定を設定します。
①Visual Basic Editorを起動する
②Visual Basic Editorのメニューバーの「ツール」をクリックした後、「参照設定」をクリックする
③参照設定画面が開かれた後、参照可能なライブラリファイルから「Microsoft ActiveX Data Objects X.X Library」にチェックを入れてOKボタンを押す
ADOのバージョンは環境によって異なりますので、環境に合わせて読みかえください。
わからなければ、最新のバージョンを選択して使用してみてください。
最後に、以下ののプログラムでOracle Databaseへの接続するプログラムを紹介します。
Oracle Databaseへの接続
Oracle Databaseに接続、切断するサンプルプログラムを以下に記載します。
- Option Explicit
- Public ORA_CN As New ADODB.Connection
- Public Const ORA_PROVIDER As String = “OraOLEDB.Oracle" 'プロバイダー
- 'データベースアカウント情報
- Public Const ORA_USER_ID As String = “user" 'ユーザID
- Public Const ORA_PASSWORD As String = “password" 'ユーザパスワード
- 'TNSサービス名を使用せず直接接続する場合
- Public Const ORA_HOST_NAME As String = “localhost" 'データベース名"
- Public Const ORA_PORT_NO As String = “1521" 'データベースのポート"
- Public Const ORA_SERVICE_NAME As String = “SERVICE" 'サービス名"
- 'TNSサービス名で接続する場合
- 'Public Const ORA_DATA_SOURCE As String = “DATA_SOURSE" 'ネットサービス名
- '*****************************************
- '* Oracle Database接続
- '*****************************************
- Sub ORACLE_CONNECT()
- Set ORA_CN = CreateObject(“ADODB.Connection")
- 'TNSサービス名を使用せず直接接続する場合
- RBN_CN.Open “Provider=" & ORA_PROVIDER _
- & “;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" _
- & “(HOST=" & ORA_HOST_NAME & “)" _
- & “(PORT=" & ORA_PORT_NO & “))" _
- & “(CONNECT_DATA=(SERVICE_NAME=" & ORA_SERVICE_NAME & “)))" _
- & “;User ID=" & ORA_USER_ID _
- & “;Password=" & ORA_PASSWORD
- 'TNSサービス名で接続する場合
- 'RBN_CN.Open “Provider=" & ORA_PROVIDER _
- ' & “;Data Source=" & ORA_DATA_SOURCE _
- ' & “;User ID=" & ORA_USER_ID _
- ' & “;Password=" & ORA_PASSWORD
- End Sub
- '*****************************************
- '* Oracle Database接続解除
- '*****************************************
- Sub ORACLE_DISCONNECT()
- ORA_CN.Close
- Set ORA_CN = Nothing
- End Sub
5行目:プロバイダーを設定する
7行目:データベースアカウントのユーザIDを設定する
8行目:データベースアカウントのパスワードを設定する
11行目:データベース名を設定する
12行目:データベースのポートを設定する
13行目:サービス名を設定する
16行目:ネットサービス名を設定する
まとめ
ExcelVBAやAccessVBAからOracle Databaseに接続する方法を紹介しました。
Oracleのデータベースからデータを自動的に取得するプログラムに活用いただけたらと思います。
業務効率化等に必ず役に立つはずです。
最後までありがとうございました。
「VBAからSQLServerに接続する方法」
「VBAで外部のAccessに接続する方法」
「【Oracle Database】結合条件を含んだデータの削除方法-SQL文 EXISTS句-」
「【Oracle Database Client 12c】インストール途中で停止する解決方法」
も紹介していますので、もしよろしければご覧ください。
最近のコメント