【发布时间】:2014-11-13 10:33:58
【问题描述】:
我有一个用 Excel 构建的表,稍后(操作后)将其粘贴到 Access 表中。它适用于 Windows 中的复制粘贴,但我想自动化该过程。我们正在谈论大量的列(A:AY)和大量的记录(10.000)。我已经看到它是用 ADO 记录集完成的,但只能逐行完成。有批量方法吗?
`Public Sub Test()
Dim connDB As New ADODB.Connection
'Dim rng As Range
strDBName = "Kiian.mdb"
strMyPath = "d:\Work\kiian"
strDB = strMyPath & "\" & strDBName
Dim xlXML As Object
Dim adoRecordset As Object
Dim rng As Range
'this is a trick I found on the boards to easily create a recordset from range
'without a connection, but it creates an object, not a recordset
Sheets("mdb all").Activate
Set rng = Range("A1:ay3")
Set adoRecordset = CreateObject("ADODB.Recordset")
Set xlXML = CreateObject("MSXML2.DOMDocument")
xlXML.LoadXML rng.Value(xlRangeValueMSPersistXML)
adoRecordset.Open xlXML
connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB
'delete records in the PVAnag Table:
strSQL = "INSERT INTO PVAnag SELECT * FROM adoRecordset"
'connDB.Execute CommandText:=strSQL
connDB.Execute strSQL, nr
MsgBox (nr)
'Sheets("mdb_all").Range("A1:AY3").CopyFromRecordset rstData
'close the objects
connDB.Close
'destroy the variables
Set adoRecSet = Nothing
Set connDB = Nothing
End Sub
` 所以基本上,我需要的是:从工作表中指定一个范围并将其插入到 Access 表中。任何帮助是极大的赞赏。 干杯
【问题讨论】:
-
上面的代码有错误吗?在哪里?
-
没有任何错误,只是它没有做任何事情,但我将这种方法搁置一旁,因为它不必要地复杂。