1

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

谢谢你。

4

2 回答 2

1

当你这样做时: -

Set excelRecordset = recordset.clone

您用对新记录集的引用替换对在 excel 电子表格上打开(并关闭)的记录集的引用。这个新记录集无论如何都没有连接到 Excel 电子表格。

使用记录集,您实际上别无选择,只能For Each通过源记录集,AddNew在目标上,将每个字段从源分配到目标,然后Update.

于 2009-09-22T07:05:22.747 回答
0

ExcelRange对象有一个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

不过,不确定将其转换为您的场景有多容易。

或者,如果它适用于您使用的驱动程序,您可能需要查看本知识库文章SELECT INTO中描述的和INSERT INTO语法

于 2009-09-23T03:11:20.163 回答