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


こんな感じ。
--
のち

No comments: