Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: JE Zeile eine csv-Datei erzeugen

JE Zeile eine csv-Datei erzeugen
11.02.2014 08:35:45
Jockel
Guten Morgen Forum,
ich benötigte ein Makro, welches mir aus jeder Zeile einer .xlsx Datei eine csv-Datei erstellt.
Zum Hintergrund:
In einer Excel-Tabelle werden wöchentlich Daten gesammelt. Die Datensätze stehen untereinander und die Informationen je Datensatz stehen in Spalte A-M.
Sind alle Datensätze je Woche erfasst, sollen sie mittels Makro als csv-Datei (Semikolon-getrennt) gespeichert werden. Je Zeile entsteht so eine csv-Datei. Der Name der jeweiligen csv-Datei muss aus dem Wert der Spalte K des jeweiligen Datensatz generiert werden. Der Speicherort der csv-Dateien kann gleich dem Verzeichnis der xlsx-Datei sein.
Vielen Dank für Eure Hilfe!!

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: JE Zeile eine csv-Datei erzeugen
11.02.2014 09:15:49
Martin
Hallo Jockel,
mit diesem Makro sollte dein Vorhaben klappen:
Sub RowToCSV()
Dim i As Long, j As Integer
Dim strRow As String, strFilePath As String
strFilePath = ThisWorkbook.Path & Application.PathSeparator
For i = 1 To ActiveSheet.UsedRange.Rows.Count
strRow = Empty
For j = 1 To ActiveSheet.UsedRange.Columns.Count
strRow = strRow & Cells(i, j) & ";"
Next j
Open strFilePath & Cells(i, 11) & ".csv" For Output As #1
Print #1, strRow
Close #1
Next i
End Sub
Viele Grüße
Martin

Anzeige
Kleine Änderung....
11.02.2014 09:20:22
Martin
Hallo Jockel,
irgendwie hatte ich überlesen, dass der Export sich auf die Spalten A-M beschränkt. Bei meinem Makro wurden alle vewendeten Spalten in die CSV-Dateien exportiert. Mit diesem Makro ist bei Spalte M auch wirklich Schluss:
Sub RowToCSV()
Dim i As Long, j As Integer
Dim strRow As String, strFilePath As String
strFilePath = ThisWorkbook.Path & Application.PathSeparator
For i = 1 To ActiveSheet.UsedRange.Rows.Count
strRow = Empty
For j = 1 To 13
strRow = strRow & Cells(i, j) & ";"
Next j
Open strFilePath & Cells(i, 11) & ".csv" For Output As #1
Print #1, strRow
Close #1
Next i
End Sub

Anzeige
AW: Kleine Änderung....
11.02.2014 11:22:57
Jockel
Hallo Martin,
das sieht verdammt gut aus. Alle Dateien werden erzeugt. Vielen Dank dafür!!!
Ein kleines Problem hab ich noch:
Das letzte Semikolon verhindert die Weiterverarbeitung der csv-Datei.
Was muss ich im Code ändern?
Gruß
Jockel

AW: Kleine Änderung....
11.02.2014 12:11:52
Rudi
Hallo,
Sub RowToCSV()
Dim i As Long, j As Integer
Dim strRow As String, strFilePath As String
strFilePath = ThisWorkbook.Path & Application.PathSeparator
For i = 1 To ActiveSheet.UsedRange.Rows.Count
strRow = Empty
For j = 1 To 13
strRow = strRow & Cells(i, j) & ";"
Next j
strRow = Left(strRow, Len(strRow)-1)
Open strFilePath & Cells(i, 11) & ".csv" For Output As #1
Print #1, strRow
Close #1
Next i

End Sub

Anzeige
AW: Kleine Änderung....
11.02.2014 12:21:41
Jockel
Perfekt!!!
Vielen Dank an alle!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

JE Zeile eine CSV-Datei erzeugen


Schritt-für-Schritt-Anleitung

Um aus einer Excel-Tabelle eine CSV-Datei zu erstellen, die für jede Zeile eine separate CSV-Datei anlegt, kannst du folgendes VBA-Makro verwenden. Dieses Makro speichert die CSV-Dateien im gleichen Verzeichnis wie deine Excel-Datei und verwendet die Werte aus Spalte K als Dateinamen. Hier ist der Code:

Sub RowToCSV()
    Dim i As Long, j As Integer
    Dim strRow As String, strFilePath As String
    strFilePath = ThisWorkbook.Path & Application.PathSeparator
    For i = 1 To ActiveSheet.UsedRange.Rows.Count
        strRow = Empty
        For j = 1 To 13
            strRow = strRow & Cells(i, j) & ";"
        Next j
        strRow = Left(strRow, Len(strRow) - 1) ' Entfernt das letzte Semikolon
        Open strFilePath & Cells(i, 11) & ".csv" For Output As #1
        Print #1, strRow
        Close #1
    Next i
End Sub

Mit diesem Makro kannst du ganz einfach aus Excel eine CSV-Datei erstellen. Achte darauf, dass deine Daten in den Spalten A bis M stehen.


Häufige Fehler und Lösungen

  1. Das letzte Semikolon bleibt in der CSV-Datei

    • Lösung: Verwende strRow = Left(strRow, Len(strRow) - 1), um das letzte Semikolon zu entfernen.
  2. CSV-Dateien werden nicht korrekt gespeichert

    • Lösung: Stelle sicher, dass der Pfad, den du im Code angibst, korrekt ist und du Schreibrechte im Verzeichnis hast.

Alternative Methoden

Wenn du kein VBA-Makro verwenden möchtest, kannst du auch manuell eine CSV-Datei aus Excel erstellen:

  1. Markiere die Daten, die du in die CSV-Datei exportieren möchtest.
  2. Gehe zu „Datei“ > „Speichern unter“.
  3. Wähle den Dateityp „CSV (Comma delimited) (*.csv)“.
  4. Speichere die Datei.

Beachte, dass bei dieser Methode nur eine CSV-Datei für die gesamte Auswahl erstellt wird.


Praktische Beispiele

Stell dir vor, du hast eine Excel-Tabelle mit wöchentlichen Verkaufsdaten. Mit dem obigen Makro kannst du für jede Woche eine separate CSV-Datei anlegen, indem du einfach das Makro ausführst. Jede Datei wird nach dem Namen des Produkts in Spalte K benannt.


Tipps für Profis

  • Verwende dynamische Dateinamen: Du kannst den Namen der CSV-Datei aus mehreren Zellen generieren. Zum Beispiel: Cells(i, 11) & "_" & Cells(i, 1) um den Dateinamen aus Spalte K und A zu kombinieren.
  • Automatisiere den Prozess: Integriere das Makro in eine Schaltfläche in deiner Excel-Datei, um den Prozess zu vereinfachen.

FAQ: Häufige Fragen

1. Kann ich das Makro in Excel 365 verwenden?
Ja, das Makro funktioniert auch in Excel 365. Achte darauf, dass die Makros aktiviert sind.

2. Wie kann ich das Makro anpassen, um nur bestimmte Zeilen zu exportieren?
Du kannst die Schleife anpassen, um nur die gewünschten Zeilen zu durchlaufen, indem du die Start- und Endwerte von For i = ... änderst.

3. Was passiert, wenn der Dateiname bereits existiert?
Das Makro überschreibt die bestehende Datei. Um dies zu vermeiden, kannst du eine Überprüfung einfügen, die prüft, ob die Datei bereits existiert, und gegebenenfalls einen neuen Namen generiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige