Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Spalten in csv durch ; oder , trennen

Excel Spalten in csv durch ; oder , trennen
04.10.2014 09:48:40
Christian
Für einen Online Shop müssen wir unsere Produkte mit einer csv in unseren Shopmintegrieren.
Nun bekommen wir vom Händler eine Excel wo alle Daten in Spalten getrennt sind.
also Format sieht so aus:
Spalten A - K sind befüllt, mit zB. Artikelnummer, Größe, EAN, etc.
Dann haben wir 1279 Zeilen mit Werten.
Wie bekomme ich die Spalten mit einem , oder ; in einer CSV getrennt.
Wenn ich die Excel einfach als CSV speichere, bleiben die ganzen Spalten erhalten.
Bin für Hilfe wirklich dankbar.
vG
Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
kann es eine VBA Lösung sein?
04.10.2014 11:24:22
Tino

AW: kann es eine VBA Lösung sein?
04.10.2014 23:05:41
Christian
hm, ist mir denke ich egal. Ich brauche schlussendlich nur die Werte Komma bzw. Simk. getrennt.

hier eine Variante
05.10.2014 12:06:15
Tino
Hallo,
hier mal eine Variante.
Bei "Const CSV_Delimiter$..." kannst du das Trennzeichen angeben.
Die Tabelle müsstest du evtl. im Code noch anpassen.
Die CSV wird im Ordner der Datei erstellt wo sich der Code befindet. (evtl. anpassen)
Der Name der Datei wird aus dem Datum im Format TT_MM_JJJJ erstellt. (evtl. anpassen)
Sub CSV_Export()
Dim ArData, ArTmp
Dim n&
Dim F%
Dim strLine$, sFilePath$
Dim MsgResult As VbMsgBoxResult

Const CSV_Delimiter$ = "," 'Trennzeichen 

'Pfad zur Datei 
sFilePath = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
'Name der Datei 
sFilePath = sFilePath & Format(Now, "dd_mm_yy") & ".csv"

'evtl. vorhandene löschen? 
If Dir$(sFilePath, vbNormal) <> "" Then
    MsgResult = MsgBox("Datei bereits vorhanden!" & vbCr & _
                       "Ersetzen?", vbQuestion + vbYesNo)
    If MsgResult = vbYes Then
        Kill sFilePath
        DoEvents
    End If
Else 'nicht vorhanden 
    MsgResult = vbYes
End If

'Datenbereich 
With Tabelle1 'Tabelle anpassen 
    'ab A1 bis zur letzten gefüllten Zeile, Referenz = Spalte 1 
    'Spaltenanzahl = .Resize(, 11) = bis Spalte K 
    ArData = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 11)
End With

If Ubound(ArData) = 1 Then 'kein Datenbereich 
    MsgBox "Kein Datenbereich vorhanden!", vbExclamation
    Exit Sub
End If

'Startzeile 
'ab Zeile 2, ohne Überschrift 
n = Lbound(ArData) + 1
'wenn Datei neu o. nicht vorhanden ab Zeile 1 mit Überschrift 
If MsgResult = vbYes Then n = Lbound(ArData)

'einzelne Zeile an Textdatei anhängen 
F = FreeFile
Open sFilePath For Append As #F
'Zeilenweise durchlaufen 
For n = n To Ubound(ArData)
    ArTmp = Application.Index(ArData, n)
    strLine = Join(ArTmp, CSV_Delimiter)
    'Trennzeichen am ende löschen 
    Do While Right$(strLine, 1) = CSV_Delimiter
        strLine = Left$(strLine, Len(strLine) - 1)
    Loop
    'in Textfile schreiben 
    Print #F, strLine
Next n
Close #F

MsgBox "Export der Daten abgeschlossen!", vbInformation

End Sub
Gruß Tino

Anzeige
AW: Excel Spalten in csv durch ; oder , trennen
05.10.2014 11:44:31
Daniel
Hi
Beim Speichern als CSV sollte eigentlich genau das passieren, was du willst.
Die Werte werden semikolongetrennt in eine Textdatei geschrieben.
Wenn du da Ergebnis kontrollieren willst, solltest du die Datei mit dem Text-Editor öffnen, nicht mit Excel.
Außerdem solltest du dich nochmal darüber schlau machen, ob es deinem aufnehmenden Programm wirklich egal ist, ob Komma oder Semikolon als Trennzeichen verwendet wird oder ob hier ein bestimmtes erwartet wird.
Beim normalen Speichern-unter als CSV erstellt Excel ein deutsches CSV mit Semikolon als Trennzeichen.
Wenn dein aufnehmenden Programm jedoch ein englisches CSV mit Komma als Trennzeichen benötigt, dann kannst du das erstellen, indem du die Datei per Makro als CSV speichert(ActiveWorkbook.SaveAs Dateiname, xlCSV). In Makros werden vorrangig die englischen Formate verwendet.
Gruß Daniel
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige