2009-09-21 74 views
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 

謝謝。

回答

1

當你這樣做: -

Set excelRecordset = recordset.clone 

您更換參考打開的Excel電子表格記錄(以及它關閉)與新的記錄集的引用。這個新的記錄集不會連接到Excel電子表格。

使用記錄集,除了目標位置上的源記錄集,我們沒有太多選擇,只能對For Each分配每個字段從源到目標和Update

+0

這正是我所擔心的所描述的SELECT INTOINSERT INTO語法。對於每個循環來說,謝謝。 :) – user141594 2009-09-22 12:00:13

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