2016-11-08 1 views
0

Ich habe endlos nach einer Lösung gesucht, aber kann es überhaupt nicht herausfinden. Jede Hilfe würde massiv geschätzt werden.Kopieren von DAO-Recordset aus Excel in Access-Tabelle

Ich habe derzeit einige Access VBA-Code, der eine DAO-Recordset-Verbindung mit einem Bereich in einem Excel-Arbeitsblatt erstellt. (Ich habe es vermieden, die Tabelle als verknüpfte Tabelle zu verknüpfen, da ich nicht sicher bin, ob Sie dies nur mit einem bestimmten Bereich tun können, und die Bearbeitung der Tabellen in keiner Weise ist eine Option).

Ich muss dann diese Daten in eine Tabelle kopieren. Ich Looping zur Zeit durch jeden Datensatz und Hinzufügen zu einem neuen Re-Cord, wie unten dargestellt:

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 

Das funktioniert gut genug, aber ich muss in jeder Arbeitsmappe durch eine Menge von Datensätzen in einer Schleife und auch Schleife durch eine Menge von Arbeitsmappen . Ich hatte gehofft, dass es eine Möglichkeit gibt, das gesamte Recordset in tblData zu packen, anstatt wie bisher durchzulaufen.

Kennt jemand einen besseren Weg?

Antwort

1

Gut nach all der Zeit der Suche nach einer Lösung, erreiche ich endlich den Punkt, wo ich um Hilfe frage und dann finde ich es trotzdem heraus.

Ich habe die Methode Transfer verwendet, um nur den Bereich verknüpfe ich brauche und dann eine INSERT INTO-Anweisung, um die Daten zu tblData zu bewegen

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" 

Ich kann dann die Schleife auf die nächste Arbeitsmappe und die tblTemp überschrieben. Es läuft jetzt viel schneller. Es mag einen anderen Weg geben, der noch besser ist, aber zumindest habe ich Fortschritte gemacht. Hoffe, das ist nützlich für jemand anderen.

Verwandte Themen