Importieren Sie CSV in Access VBA

Bilal Shahid 21 Juni 2023
  1. So verknüpfen Sie eine CSV-Datei mit einer Access-Datenbank
  2. Semikolon-getrennte CSV-Datei
  3. Exportieren Sie eine Textdatei manuell in MS Access
  4. Abschluss
Importieren Sie CSV in Access VBA

VBA bietet Entwicklern eine Vielzahl unterschiedlicher Funktionen und Features. In diesem Artikel erfahren Sie, wie Sie CSV in Access VBA importieren.

So verknüpfen Sie eine CSV-Datei mit einer Access-Datenbank

Warum VBA-Code zum Importieren von Daten verwenden, wenn andere Optionen verfügbar sind? Das Importieren von Daten über VBA-Codes hilft Ihnen beim Navigieren und Arbeiten mit verschiedenen Formaten, die beim Importieren von Daten über die visuelle Benutzeroberfläche nicht verfügbar sind.

Auch auf einer praktischeren Ebene, wenn Sie denselben Import ein paar Mal durchführen müssen, ist das Importieren von Daten mit VBA-Codes eine effiziente, zugänglichere und schnellere Methode, um die Arbeit für Sie zu erledigen.

Es erstellt eine Funktion, die jedes Mal verwendet werden kann, wodurch der Prozess schneller und einfacher wird, als jedes Mal den Importassistenten zu durchlaufen.

CSV steht für Comma Separated Values. Das bedeutet, dass die standardmäßige Importfunktion nach Kommas in der Datei sucht.

Wenn Sie jedoch etwas anderes als Kommas verwenden, können Sie die folgenden Schritte ausprobieren, damit es funktioniert.

  • Importieren Sie die Datei zunächst manuell.
  • Nachdem Sie die Einstellungen festgelegt haben, wählen Sie kurz vor der Auswahl von Fertigstellen Erweitert, um einige Dinge zu ändern.
  • Wählen Sie Speichern unter und wählen Sie entweder einen von Access vorgeschlagenen Namen oder geben Sie selbst einen Namen ein.
  • Achten Sie darauf, den von Ihnen gewählten Namen zu notieren. Zum Beispiel "Spezifikation des Datenimports".
  • Wählen Sie zweimal OK und brechen Sie dann den Import ab.
  • Verwenden Sie nun die Importspezifikation, die Sie mit dem folgenden Code erstellt haben.
DoCmd.TransferText acImportDelim, "Specification of Data Import", "T1", "D:\Data.csv", False

Eine der einfachsten Möglichkeiten, CSV in Access VBA zu importieren, besteht darin, die CSV-Datei als Tabelle mit der Access-Datenbank zu verknüpfen. Sie können diese Tabellen dann wie alle anderen gewöhnlichen Access-Tabellen bearbeiten.

Sie können beispielsweise eine entsprechende Abfrage basierend auf der Tabelle erstellen, die das zurückgibt, was Sie möchten.

Die Tabelle kann entweder manuell oder mit VBA wie folgt verknüpft werden:

DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tableToImport", _
    FileName:="C:\MyData.csv", HasFieldNames:=true

Führen Sie dann den folgenden Code aus, um die CSV-Tabellen erneut zu verknüpfen und den Import durchzuführen.

Dim DB As DAO.Database
' Re-linking the CSV Table
Set DB = CurrentDb
On Error Resume Next:   DB.TableDefs.Delete "tableToImport":   On Error GoTo 0
DB.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tableToImport", _
    fileName:="C:\MyData.CSV", HasFieldNames:=True
DB.TableDefs.Refresh
' Now perform the import
DB.Execute "INSERT INTO anyTable SELECT c1, c2, ... FROM tableToImport " _
   & "WHERE NOT F1 IN ('A1', 'A2', 'A3')"
DB.Close:   Set DB = Nothing

Wenn Sie einige Zeilen vom Anfang und einige vom Ende in Access importieren müssen, ist dies ebenfalls möglich. Nachdem Sie die CSV-Datei in Access verknüpft haben, können Sie alle erforderlichen Zeilen wie folgt importieren:

INSERT INTO anyTable SELECT c1, c2, ... FROM tableToImport WHERE NOT F1 IN ('A1', 'A2', 'A3')

In der Anweisung werden Zeilen mit den Werten 'A1', 'A2' und 'A3' in Spalte F1 übersprungen und aus der endgültigen Ergebnismenge ausgeschlossen. Wenn Ihre CSV-Datei jedoch Feldnamen hat, ist es wichtig zu beachten, dass beim Importieren mit HasFieldNames:=true diese Namen als Spaltennamen verwendet werden.

Andernfalls vergibt Access die Spaltennamen selbst, zum Beispiel 'F1', 'F2', 'F3' und so weiter. Wenn Ihre Datei kleiner ist, können Zeilen leicht gelesen und schnell geschrieben werden.

Semikolon-getrennte CSV-Datei

Wenn Ihre CSV-Datei durch Semikolons getrennt ist, benötigen Sie eine Importspezifikation. Um diese bestimmte Vorgabe zu erstellen, müssen Sie einmalig versuchen, die Daten manuell zu importieren.

Auf diese Weise können Sie die Spezifikation speichern und später mit dem VBA-Code verwenden. Dies kann auf folgende Weise erfolgen:

  • Wählen Sie Externe Daten > Neue Datenquelle > Aus Datei > Textdatei
  • Durchsuchen Sie die Optionen und wählen Sie die CSV-Datei aus, die Sie in Ihre Tabelle importieren möchten.
  • Dadurch öffnet sich der Dialog Text-Import-Assistent.
  • Legen Sie die Importeigenschaften entsprechend fest; Schließen Sie den Assistenten jedoch noch nicht.
  • Klicken Sie auf Speichern unter, nennen Sie es richtig wie "SemiColonImportSpecification" und speichern Sie die endgültige Datei.
  • Sie können den Import jetzt abbrechen, da wir hier nur noch die Spezifikationsdatei speichern müssen.
  • Kehren Sie zu Ihrem ursprünglichen VBA-Code zurück und fügen Sie einen weiteren Parameter namens Spezifikationen wie folgt ein:
    DoCmd.TransferText _
    TransferType:=acImportDelim, _
    SpecificationName:="SemiColonImportSpec", _
    TableName:="TEST", _
    FileName:="C:\TEST.CSV", _
    HasFieldNames:=True
    

Exportieren Sie eine Textdatei manuell in MS Access

Es ist auch möglich, eine Textdatei manuell in MS Access zu importieren. Auf diese Weise können Sie Ihre Texttrennzeichen und Zellentrennzeichen auswählen.

Damit dies funktioniert, müssen Sie externe Daten aus dem Menü auswählen, die Datei auswählen, die Sie verwenden möchten, und den Assistenten durchlaufen.

Sobald Sie die Importe durch die Assistenten zum Laufen gebracht haben, können Sie eine bestimmte Importspezifikation einfach speichern und für Ihren nächsten DoCmd.TransferText verwenden. Auf diese Weise können Sie nicht standardmäßige Trennzeichen wie Text in einfachen Anführungszeichen und Semikolons verwenden.

Abschluss

Das Importieren von CSV in Access VBA kann kompliziert sein; Wenn Sie jedoch die richtige Technik kennen, wird der Prozess viel einfacher. Dieser Artikel beschreibt die genauen Methoden und Details zur korrekten Vorgehensweise.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub