ich möchte ein Tabellenblatt als CSV exportieren und dabei die Dezimalkommas als solche behalten. Anscheinend wandelt Excel das beim Export in einen Punkt um.
Habe mal das Archiv durchforstet und diesen Code von Nepumuk gefunden:
Public Sub prcCreateCSV()
Dim intFileNumber As Integer
Dim lngRow As Long
Dim vntArray As Variant
Dim strText As String
Reset
intFileNumber = FreeFile
With ThisWorkbook
.Save
Open .Path & "\" & Left$(.Name, Len(.Name) - 4) & _
".csv" For Output As #intFileNumber
End With
With ActiveSheet.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
vntArray = Range(Cells(lngRow, 1), _
Cells(lngRow, .Column + .Columns.Count - 1))
vntArray = WorksheetFunction.Transpose( _
WorksheetFunction.Transpose(vntArray))
strText = Join(vntArray, ";")
Print #intFileNumber, strText
Next
End With
Close #intFileNumber
End Sub
Wenn ich das richtig verstehe, wird die Datei erst normal gespeichert, dann als CSV geöffnet, alles in ein Array geschrieben und wieder mit Semikolon-Separator gespeichert.
Das mit dem Beibehalten des Dezimalkommas funktioniert zwar jetzt, allerdings habe ich ein neues Problem.
In der Zelle steht z.B. 572. Dieser Wert ist allerdings berechnet und wäre ohne Formatierung z.B. 572,417582417582. Der obige Code fügt mir in der CSV-Datei den Wert mit allen Nachkommastellen ein. Ich brauche diese aber nicht und sie dürfen da auch nicht stehen (CSV-Datei wird später wieder von SAP importiert).
So, nun zu meinen Fragen:
Geht der Datei-Export mit Dezimalkomma (ohne Umwandlung zu Punkt) einfacher als mit obigem Code?
Falls nein, kann ich die Nachkommastellen abschneiden oder muss ich schon die Berechnung so wählen, dass keine Nachkommastellen enstehen?
Bei der Gelegenheit: Hab nicht wirklich rausgefunden was der Unterschied von "Left" und "Left$" (siehe Code) ist. Kann mir das einer sagen?
Danke für jegliche Anregung.
Gruß
Bertram