Ich verwende diese Funktion derzeit zum Speichern, habe jedoch ein Problem damit:
Private Sub spara()
ActiveWorkbook.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
Es wird automatisch mit ,
gespeichert, aber ich muss es mit ;
in seiner Datei speichern. Ist es möglich zu ändern, wie es irgendwie spart?
Ich habe versucht, nach diesem Problem zu suchen, aber bei allen Makros zum Speichern von CSV-Dateien geht es nur um das Speichern in CSV und das Aufteilen mehrerer Blätter in CSV.
Welche Sprache verwendet Ihr Excel? Wenn Ihre Muttersprache ";" Standardmäßig können Sie den Parameter "local: = True" übergeben.
ActiveWorkbook.SaveAs Filename:="C:\Temp\Fredi.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
Wenn nicht, können Sie nur danach suchen und ersetzen ...
Ändern Sie die Excel-Optionen (Erweitert, Bearbeitungsoptionen), um das Dezimaltrennzeichen auf ,
zu setzen (offensichtlich (!))
Möglicherweise lässt sich dieses Problem nicht nur mit Excel VBA lösen. Das Problem besteht darin, dass Excel Save As...
das Gebietsschema "Listentrennzeichen definieren" verwendet, Excel VBA immer das Gebietsschema "en-US" verwendet und daher immer ,
als Listentrennzeichen verwendet.
Ich würde empfehlen, eine CSV-Datei zu speichern und anschließend eine benutzerdefinierte Konsolenanwendung/ein benutzerdefiniertes Skript für die Nachbearbeitung zu verwenden. Es gibt viele CSV-Parser, die einen ,-csv
lesen und dann als ;-csv
speichern können.
Ich habe es gelöst, indem ich "SaveChanges: = False" beim Schließen der Arbeitsmappe hinzugefügt habe
With ActiveWorkbook
.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", FileFormat:=xlCSV, Local:=True
.Close SaveChanges:=False
End With
Für Leute, die Probleme mit diesem Code haben
dim wa as Workbook
Workbooks.OpenText FileName:=path2file, _
DataType:=xlDelimited, Semicolon:=True, Local:=True
set wa = ActiveWorkbook
wa.SaveAs FileName:=path2file, FileFormat:=xlCSV, _ ConflictResolution:=xlLocalSessionChanges, Local:=True
wa.Close False
Die zweite Zeile ist wirklich wichtig, wenn wa.Close False
nicht vorhanden ist, wird die Bestätigung zum Speichern angefordert, oder wenn wa.Close True
das ";" zum ",".
Nachdem Sie in die lokalen Einstellungen gegangen sind und ";" Als Listentrennzeichen trennte sich VBA noch mit einem ",". Änderte den Code auf das oben Gesagte und es wurde getan.
Hoffe das wirft ein bisschen Licht für einige
Ich hatte dies nachgeschlagen, um ein ähnliches Problem zu lösen. Ich hatte eine Excel-Tabelle, die ich in eine CSV-Datei exportierte. Diese wird dann an einer anderen Stelle geladen, erfordert jedoch die Verwendung von Semikolons anstelle von Kommas für die Zeichentrennung. Dies funktionierte Gut, wenn ich die Datei manuell exportiert habe, da ich bereits die folgenden Einstellungen in der Systemsteuerung vorgenommen habe: >> Region und Sprache >> Zusätzliche Einstellungen >> Listentrennzeichen von Komma in Semikolon. Als ich jedoch versuchte, über VBA zu automatisieren, wurde standardmäßig das Komma verwendet. Um dies zu beheben, fügte ich den von Christian Sauer vorgeschlagenen lokalen Paprameter hinzu, der dann die Tatsache aufnimmt, dass ich meine regionalen Einstellungen geändert habe.
ActiveWorkbook.SaveAs Filename:="Filename.txt", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
Danke an Christian für den Hinweis.