Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
372to376
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

In VBA Access-Datenbank aus CSV-Datei erstellen

In VBA Access-Datenbank aus CSV-Datei erstellen
02.02.2004 14:39:10
PeterG
Hallo an alle,
ich habe eine Frage an die VBA-Profis. Wegen der Datensatzmenge (500.000 Sätze) muß ich im Excel mit Hilfe von VBA (DAO) auf eine externe Access-Datenbank zugreifen. Das klappt wunderbar.
Die Access-Datenbank muß nun jeden Tag aus einer CSV-Datei neu erstellt werden. Dazu erstelle ich eine neue leere Acces-Datenbank und importiere dann die CSV-Datei. Das ist ein ziemlicher Aufwand.
Frage: läßt sich dieser Transfer von CSV zu Access evtl. auch per VBA im Excel automatisieren? Ich habe im Archiv bereits eine ganze Menge über die Konvertierung Excel/Access gelesen, aber dieser Fall ist nicht dabei. Wäre schön, wenn jemand helfen könnte. Danke für jede Antwort.
Viele Grüsse
PeterG

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In VBA Access-Datenbank aus CSV-Datei erstellen
02.02.2004 14:50:57
OttoH
Hallo Peter,
versuche besser, in Access den Import der CSV-Datei zu automatisieren.
Schau' dir mal die Hilfestellung zu DoCmd.TransferText an. Diese Aktion könnte z.B. an ein Button gebunden werden, was auf einem Access-Formular liegt.

Gruß OttoH
AW: In VBA Access-Datenbank aus CSV-Datei erstellen
02.02.2004 14:57:20
PeterG
Hallo Otto,
danke für den Tipp. Meine VBA-Kenntnisse in Access sind leider nur dürftig, aber ich werd's anpacken.
Viele Grüsse
PeterG
Gelöst!
03.02.2004 08:03:57
PeterG
Fürs Archiv und alle Interessierten, so gehts:
Dim appAccess As Access.Application

Sub NeueAccessDatenbank()
Dim dbs As Database, tdf As TableDef, fld As Field, s%
' bei Verweis auf MS-ActiveX DATA Object Bibliothek wird zweimal
' die Field-Eigenschaft zur Verfügung gestellt, was zum Fehler führt
Dim strDB As String
' Die Zeichenfolge initialisieren, die den Pfad
' der Datenbank angibt.
strDB = "D:\SST\BH\NeueDB.mdb"
' Eine neue Instanz von Microsoft Access erstellen.
Set appAccess = CreateObject("Access.Application.8")
' Die Datenbank im Microsoft Access-Fenster öffnen.
Application.DisplayAlerts = False
Kill strDB
appAccess.NewCurrentDatabase strDB
Application.DisplayAlerts = True
' Die Database-Objektvariable einstellen.
Set dbs = appAccess.CurrentDb
' Eine neue Tabelle erstellen.
Set tdf = dbs.CreateTableDef("BSaetze")
' Felder für die neue Tabelle erstellen und anfügen
Set fld = tdf.CreateField("BuchDat", dbDate): tdf.Fields.Append fld
Set fld = tdf.CreateField("Ges", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("KK", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("Konto", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("UKonto", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("GKK", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("GKonto", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("GuKonto", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("BZ", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("AnwDat", dbDate): tdf.Fields.Append fld
Set fld = tdf.CreateField("LG", dbText): tdf.Fields.Append fld
Set fld = tdf.CreateField("Betrag", dbDouble): tdf.Fields.Append fld
Set fld = tdf.CreateField("Monat", dbText, 2): tdf.Fields.Append fld
Set fld = tdf.CreateField("Buchtxt", dbText): tdf.Fields.Append fld
'Das TableDef-Objekt anfügen.
dbs.TableDefs.Append tdf
' CSV - Datei importieren
Application.DisplayAlerts = False
DoCmd.TransferText , , "BSaetze", "D:\SST\BH\BuchungssaetzeGj.csv", True
' Fehler-Tabelle löschen
DoCmd.DeleteObject acTable, "BuchungssaetzeGj_Importfehler"
tdf.Fields("Buchdat").Name = "BuDat"
tdf.Fields("Buchtxt").Name = "Buchungstext"
' Datenbank schließen
appAccess.CloseCurrentDatabase
'Access beenden
Access.Application.Quit
Set appAccess = Nothing
End Sub

Anzeige

341 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige