Excel in csv

Outsider77

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein kleines Problem beim Speichern eines Excel-Sheets in's csv-Format.
Führe ich die Schritte händisch über Datei speichern unter -> csv aus, wird eine csv-Datei erzeugt,
welche die Zeichensätze durch ein Semikolon trennt.

Lasse ich die csv-Datei allerdings per Makro erzeugen, erhalte ich eine kommagetrennte Datei.

Folgender Code zum Erzeugen:

Code:
ActiveWorkbook.SaveAs Filename:=wb_path & "\" & "csv_" & Replace(wb_name, "xlsm", "csv"), FileFormat:=xlCSV, Local:=True

Trotz des Parameters "Local" erhalte ich die csv komma-getrennt.

Der gesamte Code zum Erstellen der csv:

Code:
Sub csv_export()
Dim wb_name As String, wb_path As String

wb_name = ThisWorkbook.name
wb_path = ThisWorkbook.Path

If IsFilePath(wb_path & "\" & "csv_" & Replace(wb_name, "xlsm", "csv")) = True Then
    DeleteFile (wb_path & "\" & "csv_" & Replace(wb_name, "xlsm", "csv"))
End If

Application.EnableEvents = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ActiveWorkbook.Save

CopyFile wb_path & "\" & wb_name, wb_path & "\" & "csv_" & wb_name, 0
'Application.Visible = False
Workbooks.Open wb_path & "\" & "csv_" & wb_name, ReadOnly:=True
ActiveSheet.Copy

ActiveWorkbook.SaveAs Filename:=wb_path & "\" & "csv_" & Replace(wb_name, "xlsm", "CSV"), FileFormat:=xlCSV, Local:=True

ActiveWorkbook.Close savechanges:=True
'Application.Visible = True
DeleteFile wb_path & "\" & "csv_" & wb_name
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True

End Sub

Vielleicht im Kontext besser zu verstehen.
Kann mir bitte jemand bei der Problem-Lösung behilflich sein?

Danke!

Gruß Outi

Edit:
Mein eigentliches Anliegen ist, das aktuell geöffnete Sheet (Tabelle1 in der Excel-Mappe) als semikolon-getrennte csv zu exportieren, eventuell beim Schließen oder Speichern der Mappe.
 
Zuletzt bearbeitet:
Was hast du in "Systemsteuerung -> Regions- und Sprachoptionen" als Listentrennzeichen eingestellt?

Habe es zwar nicht probiert aber im Netz ein paar Themen gefunden wo dies als Ursache oder auch Lösung vorgeschlagen wurde.
 
Listentrennzeichen in der Systemsteuerung steht auf ";".
Wie gesagt,händisch speichern unter klappt ja auch.

Edit:
Es muß entweder mit dieser speziellen Datei zu tun haben oder mit dem Code um das "Workbook.Save" herum (siehe erster Post), weil ein Test-Sheet mit wenigen Einträgen und per Makro exportiert, ebenfalls zum korrekten Ergebnis führt.
 
Zuletzt bearbeitet:
Hallo tombe,
danke für den Link! Genau so hatte ich es auch schon probiert und es klappt.
Allerdings wird dafür bei der großen Menge an Daten auch sehr viel Zeit benötigt.
Mir wäre die schnellere Variante mittels "Speichern unter..." lieber, nur eben richtig.
Habe eben mal einen Test gemacht nur mit der Zeile "ActiveWorkBook.SaveAs...
Dann klappt es auch, allerdings sollen die User der Mappe nicht extra einen Button klicken.
Und wenn ich diese Zeile ins "Workbook_BeforeSave" schreibe, wandelt sich die Mappe ja direkt in eine csv und beim eigentlichen Speichern kommt es zu ungewollten Fragen seitens Excel.
Also...die User öffnen die Excel-Datei und tragen etwas ein. Danach schließen sie die wieder und gut.
Ich brauche für ein anderes Programm immer eine aktuelle csv davon, deshalb dachte ich, dass diese beim Speichern immer wieder neu angelegt werden könnte.
Vielleicht gibt es einen anderen (einfacheren) Weg als meinen im ersten Post?

Gruß Outi
 
Zuletzt bearbeitet:
So, ich habe es jetzt durch rumprobieren selber rausgefunden.
Es liegt am

Code:
ActiveWorkbook.Close savechanges:=True

Habe das geändert in

Code:
ActiveWorkbook.Close savechanges:=False

und es klappt so, wie ich es haben möchte.
Danke trotzdem für die Hilfe!

Gruß Outi
 

Neue Beiträge

Zurück