Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Excel Spalten in csv durch ; oder , trennen

Betrifft: Excel Spalten in csv durch ; oder , trennen von: Christian
Geschrieben am: 04.10.2014 09:48:40

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

  

Betrifft: kann es eine VBA Lösung sein? von: Tino
Geschrieben am: 04.10.2014 11:24:22




  

Betrifft: AW: kann es eine VBA Lösung sein? von: Christian
Geschrieben am: 04.10.2014 23:05:41

hm, ist mir denke ich egal. Ich brauche schlussendlich nur die Werte Komma bzw. Simk. getrennt.


  

Betrifft: hier eine Variante von: Tino
Geschrieben am: 05.10.2014 12:06:15

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


  

Betrifft: AW: Excel Spalten in csv durch ; oder , trennen von: Daniel
Geschrieben am: 05.10.2014 11:44:31

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


 

Beiträge aus den Excel-Beispielen zum Thema "Excel Spalten in csv durch ; oder , trennen"