ExcelVBA

Excel VBAでOracle接続するプログラムを作成する準備をしてみた

Excel VBAでOracleに接続するプログラムを作成することができるが、そのために、いろいろ準備が必要である。今回は、その準備を行ってみたので、その手順を共有する。

前提条件

下記記事の「ExcelファイルをExcel マクロ有効ブックとして保存」まで行い、ファイル名「DbDump.xlsm」で保存済みであること。

Excel VBAを利用してみたExcel VBAを利用すると、Excelファイルを編集する定型的な業務を自動化することができ、他の言語の開発現場でも、Excel VB...

また、下記記事の内容に従い、Oracle XEのインストールとUSER_DATAテーブルの作成が完了していること。

Spring BootでOracle接続処理を実装してみたSpring BootのWEBアプリケーションを開発する際、なんらかのデータベースにアクセスすることが多いが、SpringのJPAライブ...

やってみたこと

  1. Oracleインストール状況の確認
  2. Excelを64bit版に変更
  3. ADOを利用するための設定を追加

Oracleインストール状況の確認

Oracleインストール状況を以下のように確認する。

1) Oracleのディレクトリ(C:\oraclexe\app\oracle\product\11.2.0\server\bin)を確認し、OraOLEDB{バージョン}.dllがインストール済であることを確認する。
インストール済Oracleの確認_1

2) 以下のようにコマンドプロンプトを起動し、「sqlplus (ユーザー名)@(SID)」と接続した場合に表示されるバージョンが64ビット版であることを確認する。
インストール済Oracleの確認_2

Excelを64bit版に変更

使用していたExcelが32bit版の場合、Oracleが64bit版なので、このままだと実行時エラー「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」が発生し、Excel VBAからOracleへの接続が行えない。そこで、以下の手順で、Excelを64bit版に変更する。

1) 以下のサイトに接続し、Microsoftアカウントでログイン
https://portal.office.com

2) 以下の画面に遷移するので、「Officeのインストール」リンクを押下
エクセルを64bitに変更_2

3) 以下の画面に遷移するので、「Officeのインストール」ボタンを押下
エクセルを64bitに変更_3

4) 下記画面で「その他のオプション」リンクを押下
エクセルを64bitに変更_4

5) バージョンを「Office 64ビット」と変更し、「インストールする」ボタンを押下
エクセルを64bitに変更_5

6) ダウンロードした以下のexeファイルをダブルクリック
エクセルを64bitに変更_6

7) 下記のダイアログが表示されるので、ダウンロードが完了するまで待機
エクセルを64bitに変更_7

8) ダウンロードが完了すると、下記ダイアログが表示されるので、「閉じる」ボタンを押下
エクセルを64bitに変更_8

9) Excelを起動し、以下のように、更新後のエクセルバージョンが64ビットになっていることを確認する
エクセルを64bitに変更_9

なお、上記Excelのバージョンを確認する手順については、以下のサイトを参照のこと。
https://office-hack.com/excel/version/



ADOを利用するための設定を追加

ADOとは、Microsoftが提唱しているデータアクセス技術のことで、Excel VBAでOracleに接続するには、ADODB(Microsoft ActiveX Data Objects)への参照設定を追加する必要がある。その手順は以下の通り。

1) 「開発」タブから「Visual Basic」を選択
ADOを利用するための設定_1

2) 「ツール」メニューから「参照設定」を押下
ADOを利用するための設定_2

3) Microsoft ActiveX Data Objects (バージョン) Libraryを選択し、「OK」ボタンを押下。なお、ここではバージョン2.8を選択している
ADOを利用するための設定_3

要点まとめ

  • Excel VBAでOracleに接続するには、OracleとExcelを両方64bit版(または両方32bit版)に設定すると共に、ADODB(Microsoft ActiveX Data Objects)への参照設定を追加する必要がある。