Access + Excel VBA データ読み込み 書き換えテスト
このサイトいいなー。
<<前提条件>>
・参照設定から Microsoft ActiveX DatObjexts XX Lirary
のライブラリを読み込む
(最新バージョンでOK)
は同じフォルダに保存しておく。
今回のサンプルコードの関係上、カレントディレクトリからパスを読み込むので。
Sub DB_Read()
Dim adoCON As New ADODB.Connection
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Dim odbdDB As Variant
Dim wSheetName As Variant
Dim i As Integer
'カレントディレクトリのデータベースパスを取得
odbdDB = ActiveWorkbook.Path & "\sample.accdb"
赤字のファイルを変更
'データベースに接続する
adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & odbdDB & ""
adoCON.Open
'トランザクション開始
adoCON.BeginTrans
'カーソルをクライアント側に設定
adoRS.CursorLocation = adUseClient
'DB接続用SQL
strSQL = "SELECT T_item.* FROM T_item ORDER BY T_item.ID;"
今回は詳しくは知らないので、 T_item レコードで設定
.ID 項目が気になったので念のためIDフィールドを挿入。
もしかしたら、いらなかったかもしれない
データ型は、数値
DBのレコード名は合わせた
'レコードセットを開く
adoRS.Open strSQL, adoCON, adOpenDynamic
'アクティブなシート名を取得
wSheetName = ActiveSheet.Name
'スタート行をセット
i = 3
'テーブルの読み込み
Do Until adoRS.EOF 'レコードセットが終了するまで処理を繰り返す
With Worksheets(wSheetName)
.Cells(i, 1).Value = adoRS!ID
.Cells(i, 2).Value = adoRS!商品名
.Cells(i, 3).Value = adoRS!品番
.Cells(i, 4).Value = adoRS!単価
.Cells(i, 5).Value = adoRS!入数
End With
この赤字部分がAccessのフィールド名を読んでいるのか?
それとも、シートの名前を読んでいるのかはわからないので
一応合わせておいた
i = i + 1 '行をカウントアップする
adoRS.MoveNext '次のレコードに移動する
Loop
'トランザクション終了
adoCON.CommitTrans
'クローズ処理
adoRS.Close
Set adoRS = Nothing
adoCON.Close
Set adoCON = Nothing
End Sub
変更内容
・Accessファイルのファイル名
・レコード名を合わせた
・ライブラリを使用した