HOME       LIST

【VBA】MS MDBまたはACCDBへの接続

MS Accessのデータベース「MDB」、「ACCDB」へのVBAからの接続をメモ。

チャンスは日々準備している人に訪れてくる。 - 2016/06/28(DOJEUN)

We need quick action.(早急な対応が必要だ。)


環境

MS Office 2010のExcelのVBA

準備

MDBファイル:MS Access 2003以前バージョンから生成。
ACCDBファイル:MS Access 2010で生成。

(table name : tbl01)
column - id : 数値

MS Accessのデータベース「MDB」と「ACCDB」の違い

「MDB」はAccess2003まで使うデータベース形式。
「ACCDB」はAccess2007から使うデータベース形式
Access2003以前のバージョンから「ACCDB」への接続は出来ない。

コード

Option Explicit

Sub ボタン1_Click()
    Dim dbCon As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sSQL As String
    Dim sFileInfo As String
    Dim sPWD As String
    Dim sCon As String
    
    ' DBのFULL Path
    ' 例)f:\temp\sample.mdb 又は f:\temp\sample.accdb
    sFileInfo = "[file path]"

    ' DB接続パスワード(ない場合はブランクに指定する)
    sPWD = "[password]"
    
    Set dbCon = New ADODB.Connection
    
'    以下の接続はAccess 2003以前バージョンののみ接続可能
'    dbCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
'    "Data Source = " & sFileInfo & ";" & _
'    "Jet OLEDB:Database Password=" & sPWD & ";"

'   以下の接続はAccess 2003以前バージョンも接続可能なのでこのコードを使うのが良い。
    dbCon.ConnectionString = "Provider=<font color="red">Microsoft.ACE.OLEDB.12.0;</font>" & _
    "Data Source= " & sFileInfo & ";" & _
    "Jet OLEDB:Database Password=" & sPWD & ";"
    
    dbCon.Open
    
    sSQL = "Select * From tbl01"
    Set rst = New ADODB.Recordset
    rst.Open sSQL, dbCon, adOpenDynamic, adLockPessimistic
    
    If rst.EOF = False Then
        Do While rst.EOF = False
            Debug.Print rst("ID").Value
            rst.MoveNext
        Loop
    End If
    
    rst.Close
    Set rst = Nothing
    
    dbCon.Close
    Set dbCon = Nothing
    
End Sub

以前コンテンツ:Hello World、各プログラミング言語
次のコンテンツ:【PHP】Windows Apache起動時にPHPが起動しない(cannot load php5apache2_4.dll)



Copyright(c) 2007-2020 dojeun.com All Rights Reserved.

Valid XHTML 1.0 Transitional