Public Sub ReadAccessDataFile(ByVal FilePathName As String, _
                                                                           ByVal PassWord As String)
'
'   @brief         AccessDBを読み込む
'   @param      FilePathName             DBファイルのフルパスとファイル名
'                     PassWord                   DBファイルのパスワード
'   @note         ActiveX Data Objects(ADODB)でDBにアクセスしSELECT文で
'                     必要なデータをシートに読み込む
'   @date         Nov 07, 2016
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim cnnDB As ADODB.Connection          ’ コネクションオブジェクト
    Dim adoRs As Object                             ' ADOレコードセットオブジェクト
    Dim strSQL As String
   
    Set cnnDB = New ADODB.Connection
    
    ' データベースを開き、アクセス権の読み取り/書き込みを行い、
    ' データベース パスワードを指定する
    With cnnDB
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Properties("Jet OLEDB:Database Password") = PassWord
        .Mode = adModeReadWrite
        .Open FilePathName 
    End With
 
    '
    ' データベースにアクセスする
    '
    ' ADOレコードセットオブジェクトを作成
    Set adoRs = CreateObject("ADODB.Recordset")
    ' 持ってくるカラム名とそのテーブル名
    strSQL = "SELECT ほにゃらら, ほげほげ FROM なんちゃらテーブル"
    ' SQLを実行して対象をRecordSetへ
    adoRs.Open strSQL, cnnDB
    ' 任意のExcelシートのペーストする
    Worksheets(1).Range("A1").CopyFromRecordset adoRs
    ' レコードセットのクローズ
    adoRs.Close
    ' コネクションのクローズ
    cnnDB.Close
    ' レコードセットオブジェクトの破棄
    Set adoRs = Nothing
    ' コネクションオブジェクトの破棄
    Set cnnDB = Nothing
 End Sub
こんな感じ。
--
☼ のち ☁
No comments:
Post a Comment