我有一个记录集,其中包含导入Excel文件所需的所有数据。有没有办法可以将我的实时记录集克隆到打开Excel文件时创建的记录集?
这是我现在正在尝试的,没有运气。
Dim connection : Set connection = Server.CreateObject("ADODB.Connection")
connection.Open "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790;
Dbq=c:\MyExcel.xls;" & _
"DefaultDir=c:\; ReadOnly=False;"
Dim excelRecordset : Set excelRecordset = Server.CreateObject("ADODB.Recordset")
excelRecordset.Open "[SHEET1$]", connection, 2, 3
excelRecordset.AddNew
Set excelRecordset = recordset.clone
excelRecordset.Update
excelRecordset.Close
谢谢。
答案 0 :(得分:1)
执行此操作时: -
Set excelRecordset = recordset.clone
使用对新记录集的引用替换对excel电子表格上打开的记录集的引用(并关闭)。此新记录集无论如何都不会连接到Excel电子表格。
使用记录集除了通过目标上的源记录集For Each
AddNew
之外,您实际上没有多少选择,将每个字段从源分配到目标并Update
。
答案 1 :(得分:0)
Excel Range
个对象具有应该完成工作的CopyFromRecordset
方法。如果您可以创建一个Excel.Application
对象并打开要写入的工作簿,那么您应该能够使用它。
因此,如果您的现有记录集名为rs
且已填充,则VBA中的代码将为:
Worksheets("SHEET1").Cells(2, 1).CopyFromRecordset rs
然后,您可以迭代rs.Fields
以填写字段名称
Dim fld As Field
Dim i As Integer
i = 1
With Worksheets("SHEET1")
For Each fld in rs.Fields
.Cells(1, i).Value = fld.Name
i = i + 1
Next fld
End With
不确定转换到您的方案有多容易。
或者,如果它与您使用的驱动程序一起提供,您可能需要查看this Knowledge Base article
中描述的SELECT INTO
和INSERT INTO
语法