好ましからざる人物

ExcelのVBAでACCESSを読み込む

ネットを見るといろいろ方法はあるようだけど、パスワードが付いてるACCESSファイルをExcelのシートに読み込む一番簡単な方法で読込むことが出来た。 以下、TPのソースを...。


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


こんな感じ。
--
のち

Nessun commento: