2016-11-08 71 views
0

我已經無休止地搜索瞭解決方案,但根本找不到它。任何幫助將大規模讚賞。將Excel中的DAO記錄集複製到Access表中

我目前有一些Access VBA代碼,它在Excel工作表中設置了一個範圍的DAO記錄集連接。 (我避免將電子表格作爲鏈接錶鏈接,因爲我不確定您是否可以僅使用特定範圍來執行此操作,但不幸的是,以任何方式編輯電子表格都不是一種選擇)。

然後我需要將這些數據複製到一張表中。我目前通過每個記錄循環並將其添加到一個新的記錄如下圖所示:

Set rsTbl = CurrentDb.OpenRecordset("tblData") 
dbpath = "S:\OPS\Agent Performance.xls" 
Set db = OpenDatabase(dbpath, False, True, "Excel 8.0;HDR=Yes;") 
Set rst = db.OpenRecordset("SELECT * FROM [AgentActivity$C7:AP1000]") 

Do Until rst.EOF 
    rsTbl.AddNew 
    For Each fld In rst.Fields 
     rsTbl(fld.Name) = fld.Value 
    Next fld 
    rsTbl.Update 
rst.MoveNext 
Loop 

此作品不夠好,但我經歷了很多的工作簿的需要遍歷了很多在每個工作簿的記錄,也環路。我希望有一種方法可以將整個記錄集轉儲到tblData中,而不必像我現在那樣循環。

有誰知道更好的方法?

回答

1

畢竟,在尋找解決方案之後,我終於達到了尋求幫助的地步,然後無論如何我都明白了。

我使用TransferSpreadsheet方法,只是鏈接我需要的範圍,然後一個INSERT INTO語句將數據移動到tblData

DoCmd.DeleteObject actable, "tblTemp" 
path = "S:\OPS\Agent Performance.xls" 
DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, "tblTemp", path, True, "AgentActivity!C7:AP1000" 
CurrentDb.Execute "INSERT INTO tblData SELECT * FROM tblTemp" 

那麼我可以循環到下一個工作簿,並覆蓋tblTemp。現在它運行速度更快。可能還有另一種更好的方法,但至少我已經取得了進展。希望這對其他人有用。

相關問題