個人的には興味ないけど、訳あってちょっと調べてみた。
Oracle Instant Client をインストールする
- http://www.oracle.com/technology/global/jp/software/tech/oci/instantclient/10104/instantclient_win_dl.html から以下をダウンロードする。
- instantclient-basic-win32-10.2.0.3-20061115.zip
- instantclient-odbc-win32-10.2.0.3-20061115.zip
- instantclient-sqlplus-win32-10.2.0.3-20061115.zip
- 解凍して、C:\Program Files\instantclient_10_2 に保存する。
>cd C:\Program Files\instantclient_10_2 >dir /b classes12.jar glogin.sql oci.dll ocijdbc10.dll ociw32.dll ODBCRelnotesJA.htm ODBCRelnotesUS.htm ODBC_IC_Readme_Win.html odbc_install.exe odbc_uninstall.exe ojdbc14.jar orannzsbb10.dll oraocci10.dll oraociei10.dll Orasqlplusic10.dll sqlplus.exe sqora.chm sqora32.dll sqoraja.chm sqoras32.dll sqresja.dll sqresus.dll
Path: ;C:\Program Files\instantclient_10_2 <--末尾に追記 TNS_ADMIN: C:\Program Files\instantclient_10_2
- 接続してみる。
(コマンドプロンプトから sqlplus を実行する) >sqlplus scott/tiger@192.168.0.144:1521/orcl SQL*Plus: Release 10.2.0.3.0 - Production on Fri Nov 6 18:03:13 2009 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Release 10.2.0.4.0 - Production
ODBC の設定を行う
- C:\Program Files\instantclient_10_2\tnsnames.ora を作成する。
orcl = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.144)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
EXCEL 2007 から Oracle データベースに接続する
- EXCEL 2007 を起動する。
- [Office ボタン]-[Excelのオプション]-[基本設定]-[Excelの使用に関する基本オプション]で[[開発]タブをリボンに表示する]にチェックを入れて、[OK]を押下する。
- [開発]タブ-[Visual Basic]を選択する。
- [VBAProject (Book1)]-[右クリック]-[挿入]-[標準モジュール]を選択し、以下のコードをコピペし、保存する。
' 接続先情報の設定 Const oracle_sid = "orcl" 'sid Const oracle_user = "scott" ' user Const oracle_password = "tiger" ' pass Sub Sample001() ' 接続オブジェクトの作成 Set cn = CreateObject("ADODB.Connection") ' 接続 cn.Open "Driver={Oracle in instantclient};" & "Data Source=" & _ oracle_sid & ";", oracle_user, oracle_password ' SQL user_sql = "select * from user_tables" ' SQLの実行 Set rs = cn.Execute(user_sql) ' データの表示 rownum = 0 Do Until rs.EOF For colnum = 0 To rs.Fields.Count - 1 ActiveSheet.Cells(rownum + 3, colnum + 2) = rs(colnum).Value Next rs.MoveNext rownum = rownum + 1 Loop ' 接続切断 rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
- [Microsoft Visual Basic] を閉じる。
- [開発]タブ-[マクロ]で、「Sample001」を選択し、[実行]を押下する。