VBA für das Speichern eines Excel-Tabellenblatts als CSV-Datei
Schritt-für-Schritt-Anleitung
Um ein Excel-Tabellenblatt als CSV-Datei zu speichern, kannst Du den folgenden VBA-Code verwenden:
Sub Schaltfläche2_Klicken()
Const cDir As String = "G:\Pre-Arb Requests\"
Const cFName As String = "prearb"
Const cFExt As String = ".csv"
Dim sFullFile As String
sFullFile = cDir & cFName & Format(Now, "YYYYMMDDhhmm") & cFExt
Range("A5:G15").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=sFullFile, FileFormat:=xlCSVMSDOS, CreateBackup:=False, Local:=True
End Sub
Dieser Code kopiert die Zellen von A5 bis G15 und speichert sie als CSV-Datei. Beachte, dass Du den Parameter Local:=True
hinzufügst, um das Semikolon als Trennzeichen zu verwenden.
Häufige Fehler und Lösungen
Problem: Das Trennzeichen in der CSV-Datei ist ein Komma statt eines Semikolons.
Lösung: Füge den Parameter Local:=True
zu Deinem SaveAs
-Befehl hinzu:
ActiveWorkbook.SaveAs Filename:=sFullFile, FileFormat:=xlCSVMSDOS, CreateBackup:=False, Local:=True
Problem: Die Datei überschreibt sich ständig.
Lösung: Verwende einen Zeitstempel im Dateinamen, um dies zu vermeiden, wie im Schritt-für-Schritt-Beispiel gezeigt.
Alternative Methoden
Wenn Du eine andere Methode suchst, um ein Excel-Blatt als CSV zu exportieren, kannst Du auch die QueryTable
-Methode verwenden. Diese ist besonders nützlich, wenn Du große Datenmengen verarbeiten willst. Hier ein Beispiel:
Sub ExportAsCSV()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("DeinTabellenblatt")
ws.Copy
With ActiveWorkbook
.SaveAs Filename:="G:\Pre-Arb Requests\export.csv", FileFormat:=xlCSV, CreateBackup:=False
.Close False
End With
End Sub
Praktische Beispiele
Wenn Du nur die Zeilen mit Inhalt kopieren und als CSV speichern möchtest, kannst Du den folgenden Code verwenden:
Sub Schaltfläche2_Klicken()
Const cDir As String = "G:\Pre-Arb Requests\"
Const cFName As String = "prearb"
Const cFExt As String = ".csv"
Dim sFullFile As String
sFullFile = cDir & cFName & Format(Now, "YYYYMMDDhhmm") & cFExt
Range(Cells(5, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 7).Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=sFullFile, FileFormat:=xlCSVMSDOS, CreateBackup:=False, Local:=True
End Sub
Dieser Code kopiert nur die gefüllten Zellen ab Zeile 5 und speichert sie in einer CSV-Datei.
Tipps für Profis
- Nutze
xlCSVUTF8
, wenn Du Zeichen außerhalb der Standard-Zeichencodierung speichern möchtest.
- Teste Deinen Code regelmäßig, um sicherzustellen, dass alles wie gewünscht funktioniert.
- Füge Kommentare in Deinen VBA-Code ein, um die Wartung zu erleichtern.
FAQ: Häufige Fragen
1. Wie speichere ich ein Excel-Blatt als CSV-Datei in einer bestimmten Codierung?
Nutze den Parameter FileFormat:=xlCSVUTF8
, um eine UTF-8 codierte CSV-Datei zu erstellen.
2. Kann ich mehrere Tabellenblätter in einer CSV-Datei speichern?
CSV-Dateien unterstützen nur eine Tabelle pro Datei. Du musst jedes Blatt einzeln speichern.