Angepasste CSV-Exporte aus Excel
Basierend auf meinem letzten Artikel zum Thema Excel und CSV hier ein kurzes Beispiel, wie man aus Excel heraus Daten in ziemlich beliebigem Format (hier Komma als Spaltentrenner, Punkt als Dezimalzeichen) exportieren kann.
Ausgangspunkt ist eine kleine Excel-Datei mit vier Spalten und drei Zeilen.
Der VBA Code, adaptiert von excel-easy.com und codevba.com, exportiert diese in eine CSV Datei (im ANSI-Encoding), wenn der Spalten-Index der exportierten Spalte kleiner ist als die Breite der Range, dann wird ein Komma nach der Spalte eingefügt, sonst (am Ende der Range) ein Zeilenumbruch.
Option Explicit
Sub Schaltfläche1_Klicken()
Dim fso, f, currentColumn
Dim rng As Range, cell As Range
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("E:\SearchReplaceVBA\export.csv", 2, True)
' https://www.excel-easy.com/vba/examples/loop-through-defined-range.html
' http://codevba.com/excel/for_each_cell_in_range.htm
Set rng = Sheets(1).Range("A1:D3")
For Each cell In rng.Cells
With cell
' Debug.Print .Address & ":" & .Value & ":" & .Row & ":" & .Column
currentColumn = .Column
f.write (Replace(.Value, ",", "."))
If currentColumn < rng.Columns.Count Then
f.write (",")
Else
f.write (vbNewLine)
End If
End With
Next cell
End Sub |
Ergebnis
Feld A,Feld B,Feld C,Feld D 88.4599201649139,9.76226327089422,AAA,45.4279124487558 22.6480222965468,82.5612661495282,BBB,96.7699232025441
