EXCEL、VBAでORACLE接続、データを読み込む方法

*本サイトはアフィリエイト広告を利用しています。

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」を使用しない方法で記載しています。

コメント

タイトルとURLをコピーしました