エクセルDataをアクセスDataへ取り込みたい。
エクセルDataを簡単にVBA利用して、アクセスで取り込む方法ないのかな。。。
データベース接続を利用すれば、外部取り込みData取り込みでできますよ。
ほんとですか♪いつものように教えてください。
ハイ、では、概略手順を下記にサンプルとして記しますね♪
概略手順
- データベース接続オブジェクトの宣言
- レコードセットオブジェクト
- アクセスのテーブル名
- アクセステーブルの項目名 ※アクセス項目名=エクセル項目名であること
- 取り込みたいDataの式追加。
サンプル
Sub Accessへのexport() |
Dim msn As Worksheet |
Set msn = ThisWorkbook.Worksheets("export") '取り込みData場所は、仮に export としておく |
Dim mycon As New ADODB.Connection 'データベース接続オブジェクト |
Dim dbPath As String |
dbPath = "D:\ProgramData\Access\FileDB.accdb" |
mycon.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & dbPath & ";" |
mycon.Open |
Dim mrs As New ADODB.Recordset 'レコードセットオブジェクト |
mrs.Open "アクセスのテーブル名", mycon, adOpenDynamic, adLockPessimistic |
’以下 サンプル式なので、検索条件に合わせてVBA作成必要。 |
------ここからーーーーーーーーーーーーーー |
Dim acn1 As String ’アクセステーブルの項目名 補足:アクセス項目名=エクセル項目名であること |
Dim acn3 As String |
Dim acn4 As String |
Dim i As String |
i = 2 |
Do Until msn.Cells(i, 1) = "" |
acn1 = msn.Cells(i, 1) |
acn2 = msn.Cells(i, 2) |
acn3 = msn.Cells(i, 3) |
acn4 = msn.Cells(i, 4) |
mrs.AddNew |
mrs!acn1 = acn1 |
mrs!acn2 = acn2 |
mrs!acn3 = acn3 |
mrs!acn4 = acn4 |
mrs.Update |
i = i + 1 |
Loop |
------ここまでーーーーーーーーーーーーーー |
mrs.Close |
mycon.Close |
Set msn = Nothing |
Set mycon = Nothing |
Set mrs = Nothing |
MsgBox "Dataを登録しました", vbInformation, "登録完了" |
End Sub |