Batch Excel Import in Access

Roberto

Angesehenes Mitglied
Hallo Freunde

Ich habe sehr viele (über 100) gleichförmige Excel Dateien mit den selben Spaltenbezeichnungen
und möchte Sie nicht einzeln sondern alle gleichzeitig in eine große Access Tabelle importieren.
Ich hab aber keine ahnung von makros und finde nichts kostenloses dazu im internetz

Kann mir einer helfen?
 
Im Prinzip sind das ein paar Zeilen:

CODE Dim conn, arg, ins, sel

If WScript.Arguments.Count = 0 Then
WScript.Echo "Verwendung: Lade 'Excel-Dateiname'"
WScript.Quit
End If

arg = WScript.Arguments(0)

Set conn = WScript.CreateObject("Adodb.Connection")

conn.Open "Provider=Microsoft.Jet.Oledb.4.0;Data Source=E:\temp\beispiel.mdb"

ins = "Insert Into Tabelle(Spalte1, Spalte2, Spalte3) "
sel = "Select A.Spalte1, A.Spalte2, A.Spalte3 From [Excel 8.0;Database=E:\temp\" & arg & "].[Tabelle1$] As A"

'WScript.Echo conn.Execute(sel).GetString

conn.Execute ins & sel
conn.Close


AdoDb-Connection - Objekt erzeugen, eine Verbindung zur Ziel-Access-Datenbank öffnen, die Excel-Tabelle als Sql-Datenbank ansprechen, dort die gewünschten Spalten auswählen und sie per Insert in die Access-Tabelle pumpen.

Die per ' auskommentierte Zeile


CODE 'WScript.Echo conn.Execute(sel).GetString


erst einmal ausführen und gucken, ob der Inhalt korrekt gefunden wird. Tabellenblätter werden mit $ hinten angesprochen.

Und dann einfach über eine Batch-Prozedur (kann man sich aus einem dir - Output basteln) dieses VBScript für jede Excel-Datei einmal aufrufen.
 
oh, ok bis ich das verstanden habe vergehen sicherlich einige wochen
smile.gif
aber vielen dank!
 
Äh, sorry, vergessen:

Per Notepad eine Datei mit Endung .vbs erstellen, etwa 'lade.vbs', da das oben reinkopieren.

Einmaliger Aufruf ist dann:

CODE lade.vbs datei1.xls


Und 'datei1.xls' muß dann noch durch die anderen Dateinamen ersetzt werden - per

dir /b > info.txt

kriegt man die als Liste in die Datei info.txt, die nach Excel in Spalte C kopieren, Spalte B per Runterziehen mit lade.vbs füllen, das ganze in eine execute.cmd kopieren.

Das ist die Rahmenbehandlung.

Ich mach grade noch ein paar andere Sachen.
 
Zurück
Oben