将现有记录集克隆到excel记录集

时间:2009-09-21 19:09:21

标签: excel asp-classic vbscript adodb recordset

我有一个记录集,其中包含导入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

谢谢。

2 个答案:

答案 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 INTOINSERT INTO语法