1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe ein Makro, das ein Tabellenblatt als CSV speichern soll.
Öffne ich die gespeicherte CSV Datei mit dem Editor, stehen in sämtlichen Zeilen Semikolon. Der Grund ist vermutlich, dass in der Ursprungs-Exceldatei Formeln hinterlegt sind.
Wie bekomme ich nun eine CSV-Datei, die keine Semikolon am Ende schreibt?

Folgendes Makro verwende ich:

Sub Vorlaeufer_csv_speichern()
Dim Ausgabepfad As String
Dim Ausgabedatei As String
Dim lngLetzte As Long
Dim lngSpalte As Long
Dim Zeile As String
Dim VollZeile As String
Dim Trennzeichen As String
Dim i As Long
Dim z As Long
Dim d As Long
Dim strBlatt As String

'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False

'Ausgabepfad wird festgelegt
Ausgabepfad = "\\192.168.50.9\LogoMate_Transfer\LogoMate\Daten\Manuell\Vorlaeufer\"

'Trennzeichen wird festgelegt
Trennzeichen = ";"

For d = 1 To 5

Select Case d
Case Is = 1
strBlatt = "Vorlaeufer"

End Select

'Ausgabepfad und Dateinamen für Ausgabedatei erstellen
Ausgabedatei = Ausgabepfad & strBlatt & ".csv"

'letzte Zeile des jeweiligen Tabellenblatts ermitteln
lngLetzte = Worksheets(strBlatt).Cells(Rows.Count, 1).End(xlUp).Row

'Falls Ausgabedatei bereits besteht, wird diese gelöscht
If Dir(Ausgabedatei) <> "" Then Kill (Ausgabedatei)

'Datei Öffen zur Ausgabe
Open Ausgabedatei For Output As #1

For z = 1 To lngLetzte

For lngSpalte = 1 To 5
Zeile = Trim(Worksheets(strBlatt).Cells(z, lngSpalte).Text)
Zeile = Replace(Zeile, Trennzeichen, "") 'ggf in Text vorkommendes Trennzeichen wird gelöscht
VollZeile = VollZeile & Zeile & Trennzeichen
Next lngSpalte

'Ausgabe in Datei
VollZeile = Left(VollZeile, Len(VollZeile) - 1) 'Letztes Semicolon abschneiden
Print #1, VollZeile
VollZeile = ""

Next z

Close #1 'Datei schliessen

Next d

'Bildschirmaktualiserung
Application.ScreenUpdating = True

'Abschlussmeldung
MsgBox "Vorläufer CSV gespeichert", 64
End Sub

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

ersetze die Zeile
Print #1, VollZeile

durch
If Len(Replace(VollZeile, Trennzeichen, "")) > 0 Then Print #1, VollZeile


Dann werden nur Zeilen in die CSV-Dateien geschrieben, in denen auch Zeichen (außer dem Trennzeichen) stehen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi M.O.

vielen lieben Dank - das Problem ist gelöst. :-)
Ich kann mich nach wie vor nicht registrieren um ein "OK" zu setzen.

Colatrinkerin
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

danke für die Rückmeldung (die Neuregistrierung geht immer noch nicht :-( ).

Gruß

M.O.
...