Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CSV: Komma anstatt Semikolon

102 views
Skip to first unread message

Martin Brachmann

unread,
Apr 6, 2007, 1:42:37 PM4/6/07
to
Hallo,

ich habe eine xls-Datei in Excel 2003, die ich als CSV ausgeben möchte. Dazu
gehe ich also auf "Datei" > "Speichern Unter" und speichere es als
CSV-Datei. Leider erstellt Excel diese immer mit einem Semikolon anstatt mit
einem Komma als Trennzeichen.

Wie kann ich die xls-Datei als CSV-Datei speichern, so dass ein Komma
anstatt des Semikolons als Trennzeichen verewndet wird?

Schöne Grüße,

Martin


Thomas Ramel

unread,
Apr 6, 2007, 2:07:39 PM4/6/07
to
Grüezi Martin

Martin Brachmann schrieb am 06.04.2007

> ich habe eine xls-Datei in Excel 2003, die ich als CSV ausgeben möchte. Dazu
> gehe ich also auf "Datei" > "Speichern Unter" und speichere es als
> CSV-Datei. Leider erstellt Excel diese immer mit einem Semikolon anstatt mit
> einem Komma als Trennzeichen.

Das ist nicht leider, sondern durch die Ländereinstellungen so vorgegeben.
Hierzulande ist das Semikolon nun mal das Trennzeichen, da das Komma durch
den Dezimaltrenner bereits belegt wird.

> Wie kann ich die xls-Datei als CSV-Datei speichern, so dass ein Komma
> anstatt des Semikolons als Trennzeichen verewndet wird?

Stelle temporär die Ländereinstellungen des Betriebssystems auf
Englisch(USA), lies die Daten aus und stelle wieder auf die gewohnten
Einstellungen zurück.

Oder lies die Daten mit z.B. der folgenden VBA-Prozedur aus:

Sub SaveCSV_a()
Dim A As Variant
Dim B() As String
Dim D() As String
Dim Z As Long
Dim S As Byte
Dim R As Long
Dim C As Byte

Const Path As String = "C:\Test\"
Const Filename As String = "Test2"
Const Extension As String = ".CSV"
Const Separator As String = ";"
Const Wrapper As String = """"

'Here you can define your own Range, too
A = ActiveSheet.UsedRange

If Not IsEmpty(A) Then
Z = UBound(A, 1)
S = UBound(A, 2)
ReDim B(S - 1)
ReDim D(Z - 1)
For R = 1 To Z
For C = 1 To S
If InStr(1, A(R, C), Separator) > 0 Then
'Rows whith cells including the Separator
'put in Wrapper
B(C - 1) = Wrapper & A(R, C) & Wrapper
Else
B(C - 1) = A(R, C)
End If
Next C
D(R - 1) = Join(B(), Separator)
Next R
Open Path & Filename & Extension For Output As #1
Print #1, "sep=" & Separator & vbCrLf & Join(D(), vbCrLf)
Close #1
End If
End Sub

Mit freundlichen Grüssen
Thomas Ramel

--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps

0 new messages