Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel Tabellenblatt - CSV-Export

Excel Tabellenblatt - CSV-Export
10.03.2017 09:04:47
Schmecks
Hallo Freunde,
ich habe mal wieder ein Problem bei dem ich nicht weiter komme.
Ich habe eine Tabelle, siehe Anhang und führe auf dem Tabellenblatt "Hilfe" Berechnungen und Auswertungen durch. Um diese nun in ein anderes Programm zu übertragen muss ich den Inhalt von Tabellenblatt "Tabelle1" in eine CSV-Datei exportieren und speichern. Des Weiteren soll die CSV-Tabelle im aktuellen Pfad abgelegt werden und ein Teil des Dateinamens soll sich aus dem aktuellen Datum und dem Inhalt der Zelle "G1" (immer gleiche Zelle, da dort Themen-DropDownListe) zusammen setzen. Wenn Ich die CSV-Tabelle erstelle muss natürlich das Tabellenblatt "Hilfe" gelöscht werden. Es müssen weiterhin die Spalten erhalten bleiben und die Trennung darf nicht durch irgendwelche Zeichen erfolgen. Die CSV sollte exakt so aussehen wie das Tabellenblatt "Tabelle1". Es gibt nur diese beiden Tabellenblätter in der Originaltabelle, bzw. ist immer das "Sheet1" oder "Tabelle1" in VBA das was in eine CSV-Datei gespeichert werden soll, alle anderen können gelöscht werden.
Ich hoffe Ihr könnt mir weiterhelfen
Option Explicit

Sub Tabellenblatt_2_CSV()
Dim Mappe As Workbook
Dim Tabelle As Worksheet
Dim DateiName As String
DateiPfad = ThisWorkbook.Path
DateiName = DateiPfad & "\" & Sheets("Hilfe").Range("G1").Value & Format(Now, "yyyymmdd") &  _
_
_
_
"." & ".csv"
Set Tabelle = ThisWorkbook.Sheets("Tabelle1")
Set Mappe = Workbooks.Add
Tabelle.Copy before:=Mappe.Worksheets(Worksheets.Count)
Application.DisplayAlerts = False
Sheets(2).Delete
Application.DisplayAlerts = True
Tabelle.SaveAs Filename:=DateiName, FileFormat:=xlCSV, CreateBackup:=True
End Sub

Beispieldatei: https://www.herber.de/bbs/user/112075.xlsm
Grüße Euer Schmecks
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Tabellenblatt - CSV-Export
10.03.2017 09:50:41
Herbert
Hallo,
mein Freund Alois Eckl ("Excel Inside Solutions") hat auf seiner HP ein Beispiel, wie man eine Unicode-csv-Datei erzeugen kann. Diese ist zwar immer noch nicht "TAB-getrennt", doch wenn Du diese csv-Datei anschließend über "Daten-Externe Daten abrufen-Aus Text" in Excel importierst, kannst Du das gewünschte Trennzeichen ("TAB") einstellen und Du hast das gewünschte Ergebnis. Probier's mal!
Hier der Link zur Seite:
http://www.excel-inside.de/vba-loesungen/text/858-csv-datei-mit-unicode-zeichen-erzeugen
Servus
Anzeige
AW: Excel Tabellenblatt - CSV-Export
10.03.2017 10:16:11
Schmecks
Hallo,
Danke für den Link, aber ich bin kein Excel-Profi. Ich hatte mich an folgendem Beispiel orienentiert:
Option Explicit
Sub TabelleInNeueArbeitsmappeKopieren()
Dim Mappe As Workbook
Dim tabelle As Worksheet
Set tabelle = ThisWorkbook.Sheets("Tabelle2")
Set Mappe = Workbooks.Add
tabelle.Copy before:=Mappe.Worksheets(Worksheets.Count)
Application.DisplayAlerts = False
Sheets(2).Delete
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs "C:\Temp\Textcsv", FileFormat:=xlCSV
End Sub
das funktioniert soweit, außer das die Tabellenblätter in der CSV nicht korrekt gelöscht werden.
Ich hatte nur versucht den Code für mich, unter den oben beschriebenen Bedingungen, anzupassen.
Ich wäre für Hinweise in meinem Code dankbar.
mfg
Anzeige
AW: Excel Tabellenblatt - CSV-Export
10.03.2017 10:44:28
Herbert
Dazu musst Du doch kein VBA-Profi sein, um einen Code in Deine Am zu kopieren, noch dazu habe ich es Dir genau beschrieben, wie Du es machen sollst. Also, hier noch einmal der Code und die Beschreibung:
" wenn Du diese csv-Datei anschließend über "Daten-Externe Daten abrufen-Aus Text" in Excel importierst, kannst Du das gewünschte Trennzeichen ("TAB") einstellen und Du hast das gewünschte Ergebnis."
Sub UniCode_CSV_erzeugen()
'** Dimensionierung der Variablen
Dim strFile As Variant
'** Dateiname + Pfad festlegen
'strFile = Application.GetSaveAsFilename("Unicode_CSV-Datei.csv", "CSV-Dateien,*.csv,Alle  _
Dateien,*.*")
strFile = ThisWorkbook.Path & "\Unicode-CSV-Datei.csv"
'** Beenden, wenn kein Dateiname vorhanden ist
If strFile = False Then Exit Sub
'** Speicher-Prozedur aufrufen
Code_CSV_speichern (strFile)
End Sub
Sub Code_CSV_speichern(strFile As String)
'** Dimensionierung der Variablen
Dim filenr, a, b, lngAnzSp As Integer
Dim strData As String '** CSV-Datenzeile
'** Vorgaben definieren
filenr = FreeFile
lngAnzSp = ThisWorkbook.Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeLastCell).Column
'** Datei öffnen
Open strFile For Output As #filenr
'** Daten in CSV-Datei schreiben
Print #filenr, Chr(255); Chr(254);
For a = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
strData = ""
For b = 1 To lngAnzSp - 1
strData = strData & Cells(a, b).Text & ","
Next b
strData = strData & Cells(a, b).Text & vbCrLf
Print #filenr, GetUniCodeString(strData);
Next a
'** Datei schließen
Close #filenr
End Sub
Private Function GetUniCodeString(s As String) As String
'** Dimensionierung der Variablen
Dim a As Integer  ' Zähler über die einzelnen Bytes des Unicode-Strings
'** Umwanden in Unicode-Zeichen
GetUniCodeString = ""
For a = 1 To LenB(s)
GetUniCodeString = GetUniCodeString & Chr(AscB(MidB(s, a, 1)))
Next
End Function
Servus
Anzeige
AW: Excel Tabellenblatt - CSV-Export
10.03.2017 12:38:05
Schmecks
Hallo,
ich glaube wir reden aneinander vorbei.
Ich habe bereits erwähnt, das ich genau diese Form der CSV brauche, denn (siehe Beispiel) ein drittes Programm kommt nur mit dieser Art der CSV und den darin enthaltenen 4-5 Informationen in den 4-5 Spalten klar. Die Trennung spaltenweise soll bestehen bleiben. Ich möchte mir bestimmte Daten aus einer Datenbank generieren, siehe Tabellenblatt "Hilfe" und diese Liste in das Tabellenblatt "Tabelle1" übernehmen und dann genau das und nur das in eine CSV umwandeln und ablegen an einem Speicherort X mit dem Dateinamen aus dem gewählten DropDown "G1".
Da es sich hier um viele Varianten handelt die ich rhytmusmäßig erzeugen muss, sollte immer aus dem Tabellenblatt "Tabelle1" eine CSV erzeugt und abgelegt werden.
ich hoffe ich konnte den Sachverhalt rüberbringen.
mfg der Schmecks
Anzeige
AW: Excel Tabellenblatt - CSV-Export
10.03.2017 13:14:23
Herbert
Hallo,
probiers noch mal damit:
Sub Makro6()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs fileName:="E:\xxx\csvDatei.csv"
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
Damit speichert er die Datei wie gewünscht, bringt aber beim öffnen komischerweise eine Fehlermeldung. Wenn Du die ignorierst und auf JA klickst, hast Du sie wie gewünscht.
Servus
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel Tabellenblatt als CSV exportieren


Schritt-für-Schritt-Anleitung

Um ein Excel Tabellenblatt als CSV zu exportieren, kannst du den folgenden VBA-Code verwenden. Dieser Code erstellt eine CSV-Datei aus dem Tabellenblatt "Tabelle1", löscht das Tabellenblatt "Hilfe" und speichert die Datei im aktuellen Verzeichnis mit einem Dateinamen, der aus dem Datum und dem Inhalt der Zelle "G1" besteht.

Sub Tabellenblatt_2_CSV()
    Dim Mappe As Workbook
    Dim Tabelle As Worksheet
    Dim DateiName As String
    Dim DateiPfad As String

    DateiPfad = ThisWorkbook.Path
    DateiName = DateiPfad & "\" & Sheets("Hilfe").Range("G1").Value & Format(Now, "yyyymmdd") & ".csv"
    Set Tabelle = ThisWorkbook.Sheets("Tabelle1")

    Set Mappe = Workbooks.Add
    Tabelle.Copy before:=Mappe.Worksheets(Worksheets.Count)

    Application.DisplayAlerts = False
    Sheets(2).Delete
    Application.DisplayAlerts = True

    Tabelle.SaveAs Filename:=DateiName, FileFormat:=xlCSV, CreateBackup:=True
End Sub

Stelle sicher, dass du die richtigen Tabellenblattnamen verwendest und die Datei im gewünschten Format speicherst.


Häufige Fehler und Lösungen

  1. Fehler: "Das angegebene Format ist ungültig."

    • Lösung: Überprüfe, ob du das richtige Dateiformat in der SaveAs-Methode verwendest. Stelle sicher, dass du FileFormat:=xlCSV angibst.
  2. Fehler: CSV-Datei enthält nicht die erwarteten Daten.

    • Lösung: Überprüfe, ob du das richtige Tabellenblatt in Set Tabelle = ThisWorkbook.Sheets("Tabelle1") referenzierst.
  3. Fehler beim Löschen von Arbeitsblättern.

    • Lösung: Stelle sicher, dass du die richtige Anzahl an Arbeitsblättern hast, bevor du versuchst, eines zu löschen. Verwende Application.DisplayAlerts = False, um Warnmeldungen zu unterdrücken.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch die Funktion "Speichern unter" in Excel nutzen:

  1. Öffne das gewünschte Arbeitsblatt.
  2. Klicke auf "Datei" > "Speichern unter".
  3. Wähle im Dropdown-Menü "CSV (Comma delimited) (*.csv)" aus.
  4. Wähle den Speicherort und klicke auf "Speichern".

Beachte, dass bei dieser Methode nur das aktive Arbeitsblatt exportiert wird.


Praktische Beispiele

Hier sind einige Beispiele, wie du ein Excel Arbeitsblatt als CSV exportieren kannst:

  1. Einfacher CSV-Export ohne VBA: Speichere ein Arbeitsblatt als CSV-Datei über die Menüoptionen. Ideal für einmalige Exporte.

  2. Automatisierter Export mit VBA: Nutze den obigen VBA-Code, um regelmäßig Daten zu exportieren, z.B. täglich oder wöchentlich.

  3. Unicode CSV-Datei erstellen: Verwende den Code von Herbert, um eine CSV-Datei mit Unicode-Zeichen zu erstellen. Dies ist besonders nützlich, wenn du spezielle Zeichen in deinen Daten hast.


Tipps für Profis

  • Verwende Platzhalter für Dateinamen: Nutze Zellen, um dynamisch Dateinamen zu erstellen. So bleibt dein Export flexibel.
  • Automatisiere den Prozess: Setze Makros ein, die den Export regelmäßig durchführen, z.B. bei Arbeitsmappenöffnung oder nach Datenänderungen.
  • Teste deinen Code: Führe Tests mit Dummy-Daten durch, um sicherzustellen, dass der Export korrekt funktioniert, bevor du mit echten Daten arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Tabellenblätter gleichzeitig exportieren? Du musst jeden Arbeitsblatt einzeln im CSV-Format speichern. Es gibt keinen direkten Weg, mehrere auf einmal zu exportieren.

2. Kann ich den Export auch ohne VBA durchführen? Ja, du kannst das Arbeitsblatt über "Speichern unter" als CSV speichern. Beachte, dass diese Methode manuell ist und nicht automatisiert werden kann.

3. Was passiert mit den Datenformatierungen beim CSV-Export? CSV-Dateien speichern nur Text- und Zahlenwerte, keine Formatierungen. Stelle sicher, dass die Daten in der richtigen Form vorliegen, bevor du exportierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige