hiko-blog_Excel VBA活用術

VBA備忘録。。。

MENU

Accessクエリを実行して、Oracleデータベースからデータを取得

Sub ConnectToOracleAndRunAccessQuery()
    Dim conn As Object
    Dim rs As Object
    Dim dbPath As String
    Dim connStr As String
    Dim sql As String
    Dim ws As Worksheet
    Dim i As Integer

    ' Excelシートの設定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    ws.Cells.Clear ' シートの内容をクリア

    ' Accessデータベースのパスを指定
    dbPath = "C:\path\to\your\access\database.accdb" ' Accessデータベースのフルパスを指定

    ' Oracle ODBC接続文字列を構築
    connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";"

    ' Oracle接続文字列を追加(ユーザー名、パスワード、サービス名を指定)
    connStr = connStr & "User ID=myusername;Password=mypassword;Data Source=ORCL"

    ' Accessデータベースに接続(Oracleに接続)
    Set conn = CreateObject("ADODB.Connection")
    conn.Open connStr

    ' 実行するAccessクエリのSQL文(Oracleにアクセスするためのクエリ)
    sql = "SELECT * FROM YourAccessQuery" ' Access内で作成したクエリ名

    ' クエリの結果を取得
    Set rs = conn.Execute(sql)

    ' データをExcelシートに出力
    i = 1
    Do While Not rs.EOF
        ws.Cells(i, 1).Value = rs.Fields(0).Value ' 1列目のデータ
        ws.Cells(i, 2).Value = rs.Fields(1).Value ' 2列目のデータ
        ' 必要に応じて他の列も出力
        i = i + 1
        rs.MoveNext
    Loop

    ' 後処理
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing

    MsgBox "接続とクエリの実行が完了しました"
End Sub