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

Forumthread: CSV-Datei erstellen mit | (Pipe-Symbol) statt ;

CSV-Datei erstellen mit | (Pipe-Symbol) statt ;
Thorsten
Liebe Forumsmitglieder,
könnte mit einer von Euch u.U. helfen? Ich möchte eine CSV-Datei erstellen. Das stellt bisher kein Problem dar. Sie sollte aber in den ersten n-1 Zeilen als Trennzeichen ein Pipe-Symbol "|" besitzen und und nur in der letzten Zeile ein ";". Über den Texteditor kann man zwar das ";" durch "|" ersetzen, aber das ist so ein umständlicher Weg. Gibt es da eine elegantere Möglichkeit? Also, dass man das in Excel auswählen/einstellen kann? Für Eure Mühe und Hilfe danke ich Euch im Voraus.
Gruß Thorsten
Anzeige
AW: CSV-Datei erstellen mit | (Pipe-Symbol) statt ;
23.11.2011 10:20:19
Rudi
Hallo,
Public Sub prcCreateCSV()
Dim intFileNumber As Integer
Dim lngRow As Long
Dim vntArray As Variant
Dim intItem As Integer
Dim strText As String
Dim i As Integer
Const strSep As String = "|"
Const strSepLast As String = ";"
With Selection.CurrentRegion
For lngRow = 1 To .Rows.Count
vntArray = .Cells(lngRow, 1).Resize(, .Columns.Count)
vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
If strText = "" Then
strText = Join(vntArray, strSep)
Else
strText = strText & vbCrLf & IIf(lngRow = _
.Rows.Count, Join(vntArray, strSepLast), Join(vntArray, strSep))
End If
Next
End With
intFileNumber = FreeFile
With ActiveWorkbook
Open .Path & "\" & Left$(.Name, Len(.Name) - 4) & "_" & ActiveSheet.Name & ".csv" _
For Output As #intFileNumber
End With
Print #intFileNumber, strText
Close #intFileNumber
End Sub

Gruß
Rudi
Anzeige
AW: CSV-Datei erstellen mit | (Pipe-Symbol) statt ;
23.11.2011 12:52:13
Thorsten
Hallo Rudi,
vielen Dank für Deine Antwort und die damit verbundene Hilfe. Ich habe da noch zwei, drei Fragen, da ich kein VBA beherrsche. Ich sehe zwar, was Du geschrieben hast, aber ich kann es nicht lesen. Deshalb nochmal meine Fragen. Wo muss ich das denn hinschreiben? Muss ich ein Makro aufmachen? Kann ich das einfach so reinkopieren, oder muss ich ggf. noch Anpassungen vornehmen? Kann ich denn die Exceldatei danach noch erweitern? Vielen Dank für Deine Geduld.
Gruß Thorsten
Anzeige
AW: CSV-Datei erstellen mit | (Pipe-Symbol) statt ;
23.11.2011 14:37:26
Rudi
Hallo,
Mit Alt+F11 den VBE öffnen. links im Projektexplorer siehst du deine Mappe. Rechtsklick drauf, Einfügen-Modul und den Code da rein kopieren.
Anpassungen brauchst du imho nicht.
Gruß
Rudi
AW: CSV-Datei erstellen mit | (Pipe-Symbol) statt ;
23.11.2011 15:01:24
Thorsten
Hallo,
nochmal Danke. Werde ich gleich mal probieren. Melde mich dann gleich nochmal zum Rapport.
Gruß Thorsten
Anzeige
AW: CSV-Datei erstellen mit | (Pipe-Symbol) statt ;
23.11.2011 16:33:35
Thorsten
Hi Rudi,
vielen Dank für Deine Hilfe.
Gruß Thorsten
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

CSV-Datei erstellen mit Pipe-Symbol statt Semikolon


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei mit dem Pipe-Symbol (|) als Trennzeichen in Excel zu erstellen, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es Dir, eine CSV-Datei zu generieren, in der das Pipe-Symbol als Trennzeichen für alle Zeilen außer der letzten verwendet wird, die ein Semikolon (;) als Trennzeichen hat.

  1. Öffne Deine Excel-Datei.

  2. Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Klicke im Projekt-Explorer mit der rechten Maustaste auf Deine Arbeitsmappe und wähle „Einfügen“ > „Modul“.

  4. Kopiere den folgenden Code und füge ihn in das Modul ein:

    Public Sub prcCreateCSV()
       Dim intFileNumber As Integer
       Dim lngRow As Long
       Dim vntArray As Variant
       Dim strText As String
       Const strSep As String = "|"
       Const strSepLast As String = ";"
    
       With Selection.CurrentRegion
           For lngRow = 1 To .Rows.Count
               vntArray = .Cells(lngRow, 1).Resize(, .Columns.Count)
               vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
               If strText = "" Then
                   strText = Join(vntArray, strSep)
               Else
                   strText = strText & vbCrLf & IIf(lngRow = .Rows.Count, Join(vntArray, strSepLast), Join(vntArray, strSep))
               End If
           Next
       End With
    
       intFileNumber = FreeFile
       With ActiveWorkbook
           Open .Path & "\" & Left$(.Name, Len(.Name) - 4) & "_" & ActiveSheet.Name & ".csv" For Output As #intFileNumber
       End With
       Print #intFileNumber, strText
       Close #intFileNumber
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Markiere den Bereich, den Du in die CSV-Datei exportieren möchtest.

  7. Führe das Makro aus, indem Du auf Entwicklertools > Makros klickst und das prcCreateCSV-Makro auswählst.

Die CSV-Datei wird nun im gleichen Verzeichnis wie Deine Excel-Datei erstellt, wobei das Pipe-Symbol als Trennzeichen verwendet wird.


Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler 1004 – Anwendung oder Objekt definiert“

    • Lösung: Stelle sicher, dass Du den richtigen Bereich in Excel markiert hast. Das Makro funktioniert nur mit einem ausgewählten Bereich.
  • Fehler: Datei wird nicht erstellt

    • Lösung: Überprüfe die Schreibrechte im Zielverzeichnis. Stelle sicher, dass du die Datei nicht in einem schreibgeschützten Ordner zu speichern versuchst.

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch die folgenden Schritte nutzen:

  1. Exportiere Deine Excel-Datei standardmäßig als CSV.
  2. Öffne die CSV-Datei in einem Texteditor.
  3. Ersetze alle Semikolons (;) durch Pipe-Symbole (|), außer in der letzten Zeile, wo Du ein Semikolon beibehalten solltest.

Diese Methode ist jedoch weniger elegant und erfordert manuelle Arbeit.


Praktische Beispiele

Wenn Du beispielsweise eine Tabelle mit den folgenden Daten hast:

Name Alter Stadt
Max 28 Berlin
Anna 24 München
Tom 30 Hamburg

Nach dem Ausführen des Makros wird die resultierende CSV-Datei folgendermaßen aussehen:

Max|28|Berlin
Anna|24|München
Tom;30;Hamburg

Tipps für Profis

  • Automatisierung: Du kannst das Makro anpassen, um es automatisch beim Speichern der Datei auszuführen.
  • Erweiterungen: Überlege, ob Du das Makro erweitern möchtest, um zusätzliche Funktionen wie Fehlerüberprüfungen oder spezifische Formatierungen für die Daten zu integrieren.

FAQ: Häufige Fragen

1. Kann ich das Makro auch für andere Trennzeichen verwenden? Ja, Du kannst die Konstanten strSep und strSepLast im VBA-Code anpassen, um andere Trennzeichen zu verwenden.

2. Ist das Makro mit allen Excel-Versionen kompatibel? Das Makro funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016 und 2019.

3. Kann ich das Makro auch für größere Datenmengen verwenden? Ja, das Makro kann mit großen Datenmengen arbeiten, solange Dein Computer über ausreichend Ressourcen verfügt, um die Daten zu verarbeiten.

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