CSV: Speicher-Fehler (Trennzeichen fehlt ab der 16 Zeile, wenn die letzte Spalte leer ist)!!

05/01/2009 - 09:30 von Ralph Hüttenmoser | Report spam
Gutes Neujahr wünsche ich Euch allen.

Wir habe das Problem, dass bei der Speicherung in ein CSV-Format ab der 16 Spalte das nötige ; fehlt. Das passiert nur, wenn die
letzte Spalte leer ist.

Sonderfall:
Wenn man z.B. auf der 80.en Linie die letzte Spalte mit einem Wert füllt, dann ist um die 80.e Linie ein 16.er Block mit ; gefüllt.

Es würde mich freuen, wenn mir jemand weiter helfen kann.

Danke Ralph

PS:
Office 2002 + Office 2003

Spalte_1;Spalte_2;Spalte_3;Spalte_4;Spalte_5;Spalte_6;Spalte_7;Spalte_8
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125;
1;1;1;1;1;1;1477.125 <- AB HIER FEHLT DAS NÖTIGE ;
1;1;1;1;1;1;1477.125
 

Lesen sie die antworten

#1 Thomas Ramel
05/01/2009 - 22:21 | Warnen spam
Grüezi Ralph

Ralph Hüttenmoser schrieb am 05.01.2009

Wir habe das Problem, dass bei der Speicherung in ein CSV-Format ab der 16 Spalte das nötige ; fehlt. Das passiert nur, wenn die
letzte Spalte leer ist.

Sonderfall:
Wenn man z.B. auf der 80.en Linie die letzte Spalte mit einem Wert füllt, dann ist um die 80.e Linie ein 16.er Block mit ; gefüllt.



Ja, das scheint ein Bug beim Auslesen der Daten zu sein.
Verwende daher die folgende VBA-Routine zum Auslesen:

Option Base 1

Sub SaveCSV_a()
' Hier die weiteren Deklarationen
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 Pfad As String = "C:\Test\"
Const Dateiname As String = "NeuerDateiname"
Const Extension As String = ".CSV"
Const Trennzeichen As String = ";"
Const Kapselzeichen As String = """"

'Hier kann auch ein eigener Range angegeben werden
A = ActiveSheet.UsedRange
If Not IsEmpty(A) Then
Z = UBound(A, 1)
S = UBound(A, 2)
ReDim B(S)
ReDim D(Z)
For R = 1 To Z
For C = 1 To S
If InStr(1, A(R, C), Trennzeichen) > 0 Then
B(C) = Kapselzeichen & A(R, C) & Kapselzeichen
Else
B(C) = A(R, C)
End If
Next C
D(R) = Join(B(), ";")
Next R
Open Pfad & Dateiname & Extension For Output As #1
Print #1, Join(D(), vbCrLf)
Close #1
End If
End Sub


Mit freundlichen Grüssen
Thomas Ramel (@Laptop)

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

Ähnliche fragen