web-dev-qa-db-de.com

Als CSV mit Semikolon-Trennzeichen speichern

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.

8
saknar namn

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 ...

11
Christian Sauer

Ändern Sie die Excel-Optionen (Erweitert, Bearbeitungsoptionen), um das Dezimaltrennzeichen auf , zu setzen (offensichtlich (!))

2
pnuts

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.

1
Petr Abdulin

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
1
Lionel T.

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

0
dmb

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.

0
Jason