用VBA把EXCEL表導入ACCESS數據庫中

   首先在指定的access數據庫的建立一張表,表格的字段和需要導入EXCEL表的字段保持一致。

  方法一:在eccel VBA編輯器編寫代碼,使用FOR循環導入:

Sub 利用Excel的VBA將數據寫入Access()

    '定義ADODB 連接Access數據庫
    Dim Cnn As New ADODB.Connection
    Dim Rs As New ADODB.Recordset
    Dim strCon As String
    Dim strFileName As String   '數據庫文件名
    
    strFileName = InputBox("請輸入文件路徑及文件名:", "Excel傳遞數據至Access", "E:\ExcelTest\Staff.mdb")
    '連接字符串,我這裏是Access2010,所提供者參數爲:Provider=Microsoft.ACE.OLEDB.12.0;
    '如果此參數不能使用,根據自己的電腦修改這個字符串
    '至於連接至的數據庫名,根據自己的電腦修改,或用一個對話框或其他方式將此值傳遞進程序
    strCon = "provider=Microsoft.jet.OLEDB.4.0;" _
             & "Data Source=" & strFileName & ";"
    Cnn.Open strCon
    Rs.ActiveConnection = Cnn
    Rs.LockType = adLockOptimistic
    
    Rs.Open "Employee"   '假設表爲Employee
    
    '定義Excel表中的數據區域以寫入Access
    Dim Sht As Worksheet
    Dim Rn As Long
    Dim Cn As Long
    Set Sht = ThisWorkbook.Sheets("Sheet1")
    '假設將 Sheet1 表的 2-6行的1、2、3列寫入Access表
    For Rn = 2 To 6
        Rs.AddNew
        Rs!num = Sht.Cells(Rn, 1)         ’num,name,department是數據庫中指定表的字段
        Rs!Name = Sht.Cells(Rn, 2)
        Rs!department = Sht.Cells(Rn, 3)
        Rs.Update
    Next Rn
    MsgBox "完成!"
    
    Rs.Close
    Cnn.Close
    Set Rs = Nothing
    Set Cnn = Nothing
    Set Sht = Nothing
End Sub

方法二:在access VBA編輯器中編寫代碼

Sub ExcelToAccess()
  DoCmd.TransferSpreadsheet acImport, , "Staff", "E:\ExcelTest\Employee.xls", True, "Sheet1!"    ‘DoCmd.TransferSpreadsheet是access編輯器中函數


End Sub

方法三:在excel編輯器中使用SQL語句,將EXCEL表導入到指定的數據庫中

Sub 把Excel數據插入數據庫中()
'*******************************************
'時間:2013-01-08
'作者:Allen
'功能:把當前工作表的數據增加到在程序文件同一目錄下進銷存表數據庫中
'注意:要在工具/引用中引用microsoft activex date objects x.x
'      其中x.x爲版本號,可能會因爲你安裝的office的版本不同而不同,本例引用了2.5版
'*******************************************
Dim conn As ADODB.Connection
Dim WN As String
Dim TableName As String
Dim sSql As String
Dim tStr As String
'數據庫名,請自行修改,路徑與當前工作簿在同一目錄
WN = "Staff.mdb"
'數據庫的表名與當前工作表名一致
TableName = ActiveSheet.Name


Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
                        "Extended Properties=Excel 8.0;" & _
                        "Data Source= E:\ExcelTest\Employee.xls ;;Extended Properties='Excel 8.0;HDR=YES;IMEX=1' "
conn.Open
If conn.State = adStateOpen Then
    sSql = "Insert Into [;DataBase=" & ActiveWorkbook.Path & "\" & WN & "]." & myWbName & " Select * From [" & ActiveSheet.Name & "$]"
      Cnn.Execute sSql
    MsgBox "成功把數據插入到“" & TableName & "”中!", , "http://Allen.com"
    conn.Close
End If
Set conn = Nothing
End Sub





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章