Importieren Sie eine große Anzahl von CSV-Dateien in Access

15091
soandos

Alle CSV-Dateien haben alle dasselbe Format. Ich möchte, dass sich jede CSV-Datei in einer eigenen Tabelle befindet, wobei der Tabellenname mit dem Dateinamen identisch ist.

Wie kann ich das machen?

0

2 Antworten auf die Frage

2
physics2010

Ich gebe der Gemeinschaft etwas zurück, nachdem ich vier Stunden meiner Zeit damit verschwendet habe, ein bestimmtes Problem herauszufinden, aber gleichzeitig Ihre Frage beantworte. Der gesamte andere Code wurde aus anderen Quellen zusammengestellt. Dieser Code verwendet die Transfertext-Funktion, um mehrere CSVs aus einem Verzeichnis in ihre eigenen separaten Tabellen mit dem Dateinamen FILENAME als Tabellennamen zu ziehen. Wenn Sie Dateien mit demselben Dateinamen ausführen, können Sie sie an eine vorhandene Tabelle anhängen (praktisch, wenn Sie 30 Dateien mit unterschiedlichen Namen haben, aber von Monat zu Monat denselben Namen behalten). Zugang 2010

Wo ich Probleme hatte: Die verflixten Tabellen würden nicht angehängt werden, wenn die gleichnamige Datei ausgeführt wurde . Es würde immer eine neue Tabelle erstellen und eine 1 2 3 usw. anhängen. Whatever_csv whatever_csv1 whatever_csv2. *** Sie müssen den Punkt aus dem Dateinamen entfernen. Obwohl der Zugriff bei der Erstellung der Tabelle automatisch in einen Unterstrich geändert wird, werden Dateiname und Tabelle unterschiedlich benannt. Dies gilt für alle Zeichen, die von Access nicht zugelassen werden.

Die letzten vier des Dateinamens abschneiden, um .csv mit strTable = Left (strFile, Len (strFile) - 4) zu entfernen.

***** Hier ist die Antwort auf deine Frage *****

Option Compare Database  Option Explicit   Function DoImport()   Dim strPathFile As String  Dim strFile As String  Dim strPath As String  Dim strTable As String  Dim blnHasFieldNames As Boolean   ' Change this next line to True if the first row in CSV worksheet  ' has field names  blnHasFieldNames = True   ' Replace C:\Documents\ with the real path to the folder that  ' contains the CSV files  strPath = "C:\Documents\"   ' Replace tablename with the real name of the table into which  ' the data are to be imported   strFile = Dir(strPath & "*.csv")    Do While Len(strFile) > 0  strTable = Left(strFile, Len(strFile) - 4)  strPathFile = strPath & strFile  DoCmd.TransferText acImportDelim,, strTable, strPathFile, blnHasFieldNames    ' Uncomment out the next code step if you want to delete the  ' EXCEL file after it's been imported  ' Kill strPathFile   strFile = Dir()   Loop    End Function  
1
Diego

Wenn Ihre CSV-Dateien dasselbe Format haben, sollten Sie sie normalerweise in einer einzigen Tabelle aufbewahren. Zum Beispiel können Sie zwei Tabellen haben, eine mit dem Namen Ihrer Dateien und eine mit ihrem Inhalt.

Für den Import mehrerer CSV-Inhalte bevorzuge ich normalerweise VBA. Es gibt 3 Hauptoptionen:

  • DoCmdTransferText
  • Dateisystemobjekt
  • E / A-offene Anweisung

Da alle Ihre CSV-Dateien dasselbe Format haben, ist der einfachste Pfad der erste.

Um DoCmd TransferText verwenden zu können, müssen Sie ein Schema angeben . Sie können dieses Schema erstellen, indem Sie manuell nur eine Datei importieren. Wenn die Option zum Speichern des Schemas angezeigt wird, speichern Sie es einfach. Mit der Funktion Dir () mit der Erweiterung "* .csv" durchlaufen Sie Ihr Verzeichnis und importieren alle Ihre Dateien.

HTH