Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

In VBA Access-Datenbank aus CSV-Datei erstellen

Forumthread: 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
Anzeige

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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatisierung des Imports von CSV-Dateien in Access mit VBA


Schritt-für-Schritt-Anleitung

  1. Access-Anwendung erstellen: Du kannst eine neue Instanz von Microsoft Access über VBA erstellen.

    Dim appAccess As Access.Application
    Set appAccess = CreateObject("Access.Application.8")
  2. Datenbank definieren: Lege den Pfad für deine neue Access-Datenbank fest.

    Dim strDB As String
    strDB = "D:\SST\BH\NeueDB.mdb"
  3. Datenbank erstellen: Stelle sicher, dass die Datenbank nicht existiert, bevor du sie erstellst.

    Application.DisplayAlerts = False
    Kill strDB
    appAccess.NewCurrentDatabase strDB
    Application.DisplayAlerts = True
  4. Tabelle erstellen: Definiere die Struktur deiner Tabelle in der Access-Datenbank.

    Set tdf = dbs.CreateTableDef("BSaetze")
    'Felder hinzufügen
    Set fld = tdf.CreateField("BuchDat", dbDate): tdf.Fields.Append fld
  5. CSV-Datei importieren: Nutze DoCmd.TransferText, um die CSV-Datei in die Access-Datenbank zu importieren.

    DoCmd.TransferText , , "BSaetze", "D:\SST\BH\BuchungssaetzeGj.csv", True
  6. Datenbank schließen: Schließe die Access-Datenbank und beende die Access-Anwendung.

    appAccess.CloseCurrentDatabase
    Access.Application.Quit

Häufige Fehler und Lösungen

  • Fehler bei der Datenbankerstellung: Stelle sicher, dass der Pfad zur Datenbank korrekt ist und die Datei nicht bereits existiert.

  • CSV-Datei nicht gefunden: Überprüfe den Pfad zur CSV-Datei und stelle sicher, dass er korrekt angegeben ist.

  • Feldnamen stimmen nicht überein: Achte darauf, dass die Feldnamen in der CSV-Datei mit denen in der Access-Tabelle übereinstimmen.


Alternative Methoden

Wenn du keine VBA-Kenntnisse hast, kannst du den Import auch manuell in Access durchführen:

  1. Öffne Access und klicke auf "Datenbankwerkzeuge".
  2. Wähle "Externen Daten importieren" und dann "Textdatei".
  3. Folge dem Assistenten, um die CSV-Datei in Access zu importieren.

Praktische Beispiele

Hier ein einfaches Beispiel, wie du eine CSV-Datei in Access importieren kannst:

Sub ImportCSVToAccess()
    Dim appAccess As Access.Application
    Set appAccess = CreateObject("Access.Application.8")
    appAccess.OpenCurrentDatabase "D:\SST\BH\NeueDB.mdb"
    DoCmd.TransferText , , "BSaetze", "D:\SST\BH\BuchungssaetzeGj.csv", True
    appAccess.CloseCurrentDatabase
    appAccess.Quit
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere Error-Handling in deinen VBA-Code, um unerwartete Fehler zu vermeiden.

  • Automatisierung optimieren: Überlege dir, Skripte zu erstellen, die regelmäßig automatisch ausgeführt werden, um den Importprozess zu vereinfachen.

  • Dokumentation: Halte deine Skripte gut dokumentiert, sodass andere (oder du selbst in der Zukunft) sie leicht verstehen können.


FAQ: Häufige Fragen

1. Wie kann ich meine Access-Datenbank aus Excel erstellen? Du kannst Excel nutzen, um eine Access-Datenbank zu erstellen, indem du VBA verwendest, um die Access-Objekte anzusprechen.

2. Was ist der Unterschied zwischen .mdb und .accdb Dateien? Die .mdb-Datei ist das ältere Format für Access-Datenbanken, während .accdb die neuere Version ist, die zusätzliche Funktionen unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige