EXCELのVBAで、ORACLEに接続してデータを読み込む方法を解説します。
基幹システムでORACLEデータベースを使用している場合には必須スキルです。
一元化された社内データベースからデータを自由に取り出すことができれば、様々なプログラムを活用して、業務の改善が可能になります。
また、パッケージシステムの運用においては、カスタマイズコストの削減に大きく貢献できます。
ぜひとも、このスキルを身につけてください。
参照設定を行う
まずは、参照設定を行います。
① VBEの画面から参照設定を選びます。
②「Microsoft ActiveX Data Objects 2.8 Library」をチェックします。
VBAのコーディング内容
以下のようにコーディングします。
Sub ORACLE_CONNECT()
Const P_HOST As String = "192.168.0.1" '環境により設定を変更します
Const P_PORT As String = "1521" '設定で異なりますが、通常は1521
Const P_SERVICE_NAME As String = "orcl" '設定で異なりますが、デフォルトはorcl
Const P_USER_ID As String = "user" 'ユーザーID
Const P_PASSWORD As String = "pass" 'パスワード
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim My_SQL As String
Dim i As Integer
cn.ConnectionString = "Provider=OraOLEDB.Oracle" _
& ";Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" _
& "(HOST=" & P_HOST & ")" _
& "(PORT=" & P_PORT & "))" _
& "(CONNECT_DATA=" _
& "(SERVICE_NAME=" & P_SERVICE_NAME & ")))" _
& ";User ID=" & P_USER_ID _
& ";PASSWORD=" & P_PASSWORD
cn.Open
My_SQL = "SELECT * FROM テーブル名 "
rs.Open My_SQL, cn
i = 1
Do Until rs.EOF
i = i + 1
ActiveSheet.Cells(i, 1) = rs.Fields.Item(0) '1番目のフィールド
ActiveSheet.Cells(i, 2) = rs.Fields.Item(1) '2番目のフィールド
ActiveSheet.Cells(i, 3) = rs.Fields.Item(2) '3番目のフィールド
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
「tnsnames.ora」を使用しない方法で記載しています。