1,以Excel为数据源建立连接导入。
关键点在于Excel的数据要有表头,表头要和数据库表的列名一样。连接字符串中HDR=YES不能省略,也就是第一行是表头的意思。IMEX=1;是把数据都当作字符串读取。
Subtest() Dim cn AsADODB.Connection Dim strSQL As String Dim lngRecsAff As Long Dim Headers As Boolean Dim strConn As String Dim path As String On Error GoTotest_Error Headers = True path = "c:20131212.xls" strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" &_ "Data Source=" & path & ";" &_ "Extended Properties=""Excel 8.0; IMEX=1;HDR=YES""" Debug.Print strConn Set cn = NewADODB.Connection cn.Open strConn 'Import by using Jet Provider. strSQL = "Insert INTO [odbc;Driver={SQL Server};" &_ "Server=192.168.6.111;Database=answer;" &_ "UID=sa;PWD=password].test1 " &_ "Select * FROM [Sheet1$]" Debug.Print strSQL cn.Execute strSQL, lngRecsAff Debug.Print "Records affected: " &lngRecsAff cn.Close Set cn = Nothing On Error GoTo 0 Exit Sub test_Error: MsgBox "Error " & Err.Number & "(" & Err.Description & ") in procedure test of VBA Document ThisWorkbook" End Sub
2,还有一种方案,是以sqlserver为数据源,写法大致如下
"INSERT INTO [档案1] SELECT * FROM [Excel 8.0;Database=" & ThisWorkbook.FullName & ";HDR=YES].[sheet1$" & addr & "];"