请教各位VBA高手,如何用程序实现将不同的EXCEL工作薄导入已有的不同ACCESS数据表中
例如:将 JSPOINT.XLS,JSLINE.XLS,PSPOINT.XLS,PSLINE.XLS
导入 数据库.MDB中的JSPOINT,JSLINE,PSPOINT,PSLINE数据表中
注:EXCEL表名与ACCESS表名是对应的
急急急急急急急急
例如:将 JSPOINT.XLS,JSLINE.XLS,PSPOINT.XLS,PSLINE.XLS
导入 数据库.MDB中的JSPOINT,JSLINE,PSPOINT,PSLINE数据表中
注:EXCEL表名与ACCESS表名是对应的
急急急急急急急急
工作表为: Test.Xls 里面有工作本: Sheet1 Sheet2 Sheet3 或更多的工作本.
对于每一个工作本来说:比说 Sheet1 他在256列.65536行.(但不是说每一行,每一列都有数据)
也就是说一作Excel表格里面有N个表格,每个表格是不定行,不定列的.好了.现在再来说你的问题.一个数据库.里面有一个表格.第是对应Excel文档里面的Sheet1工作表还是对应Sheet2工作表?
对于你的工作表来说,你的列数是否有定义.(是否是个空表.结构都没有.)如果是这样,那还要建立表的结构.
http://download.csdn.net/source/549064
看看我以上的两个例程你的问题就可以得到解决了
不过这三种方法都可以通过调用access内部的导入功能来轻松实现目的。
我想用EXCEL里的VBA实现。
哪位高手帮我解决一下,谢谢!!
用Excel Vba 连接access数据库,用sql文一条一条插进去。
或者是你用你录制宏把一条记录插入ACCESS中,看下生成的宏代码
Function TransData(a As String, b As String, c As String, d As String, e As String, f As String)Dim conn As New ADODB.Connection
Dim com As New ADODB.Commandconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Documents and Settings\Administrator\桌面\abc.mdb"
conn.Opencom.CommandType = adCmdText
com.CommandText = "Insert Into JSPOINT Values('" & a & "','" & b & "','" & c & "','" & d & "','" & e & "','" & f & "')"
com.ActiveConnection = conncom.Execute
conn.Close
Set com = Nothing
Set conn = NothingEnd Function依次读取每一条记录,然后依次导入到ACCESS数据库中即可。
Sub TTT()Dim fs As New Scripting.FileSystemObject
Dim qt As QueryTable
Dim sqlSelect As String
Dim sqlFrom As StringConst InvPath As String = "Z:\test"sqlSelect = "[Sheet1$a:d].Location, [Sheet1$a:d].Code, [Sheet1$a:d].Qty, [Sheet1$a:d].Unit"
sqlFrom = "[" & InvPath & "].[Sheet1$a:d] [Sheet1$a:d]"With ThisWorkbook.Sheets(1)
.Range("a1:d65536").ClearContents
Set qt = .QueryTables.Add("ODBC;DSN=Excel Files;DBQ=" & InvPath & ".xls" & ";DriverId=790;", .Range("a1"), "Select " & sqlSelect & " From " & sqlFrom )
qt.FieldNames = True
qt.Refresh False
End WithEnd Sub