hiko-blog

VBA業務改善

MENU

エクセルDataをアクセスDataへ取り込みたい。

エクセルDataをアクセスDataへ取り込みたい。

エクセルDataを簡単にVBA利用して、アクセスで取り込む方法ないのかな。。。

データベース接続を利用すれば、外部取り込みData取り込みでできますよ。

ほんとですか♪いつものように教えてください。

ハイ、では、概略手順を下記にサンプルとして記しますね♪

 

概略手順
  1. データベース接続オブジェクトの宣言
  2. レコードセットオブジェクト
  3. アクセスのテーブル名
  4. アクセステーブルの項目名 ※アクセス項目名=エクセル項目名であること
  5. 取り込みたい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