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

Forumthread: Blatt als CSV speichern und zurück

Blatt als CSV speichern und zurück
10.03.2005 02:14:12
MichaV
Guten Morgen,
wäre schön, wenn mir jemand auf die Sprünge helfen könnte:
Ich möchte ein Tabellenblatt als csv- exportieren. Dazu speichere ich es per Button- Klick folgendem Code. Durch SaveAs wird die FileFormat- Eigenschaft auf xlCSV gesetzt. Ich möchte aber xlWorkbookNormal beibehalten, weil der Benutzer nach weiterer Arbeit die Mappe als xls speichern soll. Da FileFormat aber schreibgeschützt ist fällt mir nichts besseres ein, als noch einmal zu speichern, aber als xlWorkbookNormal.


      
Private Sub CommandButton1_Click()
Dim strAlterName As String
strAlterName = Me.Name 
'Blattnamen merken
ChDrive ActiveWorkbook.Path 'Arbeitsverzeichnis auf Verzeichnis, in dem Excel- Datei liegt
ChDir ActiveWorkbook.Path
On Error GoTo fehler
ActiveWorkbook.SaveAs FileFormat:=xlCSV, CreateBackup:=
False
   
Sheets(2).Name = strAlterName 
'alten Namen wiederherstellen, weil dieser durch Speichern als CSV geändert

ActiveWorkbook.SaveAs FileFormat:=xlWorkbookNormal 
'nur, um das Workbook wieder als xls zu kriegen
Exit Sub
fehler:
If Err Then MsgBox "Datei wurde nicht gespeichert"
Sheets(2).Name = strAlterName
End Sub 


Funktionieren tut das schon, aber ich finds ein bischen umständlich.
Wie krieg ich mein Blatt als csv exportiert, ohne die zusätzliche Speicherung als xlWorkbookNormal?
Vielen Dank für Eure Hilfe.
Micha
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blatt als CSV speichern und zurück
10.03.2005 06:09:00
Ramses
Hallo
Wenn du CSV haben willst, dann hast du CSV FileFormat :-)
Warum verwendest du nicht
ActiveWorkbook.SaveCopyAs
Gruss Rainer
AW: Blatt als CSV speichern und zurück
10.03.2005 08:02:33
MichaV
Hi Ramses,
weil bei ActiveWorkbook.SaveCopyAs FileFormat:=xlCSV, CreateBackup:=False die Fehlermeldung "Benanntes Argument nicht gefunden" kommt. Ist ja auch -lt. VBA- Hilfe - nicht vorgesehen.
Gruß- Micha
Anzeige
AW: Blatt als CSV speichern und zurück
10.03.2005 08:58:06
Heinz
Hallo Micha,
hier ein Besipiel:

Sub Write_Csv()
F = FreeFile(0)
fname = InputBox("Enter the filename with Path:", _
"Please Enter Output File Name:")
MsgBox "File Selected is: " & fname
If fname <> False Then
Open fname For Output As #F
Set Rng = ActiveCell.CurrentRegion
Debug.Print Rng.Address
FCol = Rng.Columns(1).Column
LCol = Rng.Columns(Rng.Columns.Count).Column
Frow = Rng.Rows(1).Row
Lrow = Rng.Rows(Rng.Rows.Count).Row
For i = Frow To Lrow
outputLine = ""
For j = FCol To LCol
If j <> LCol Then
outputLine = outputLine & Cells(i, j) & ";"
Else
outputLine = outputLine & Cells(i, j)
End If
Next j
Print #F, outputLine
Next i
Close #F
End If
End Sub

oder einfacher:

Sub csvSpeichern()
exportfile = "C:\test.csv"
Dateinummer = FreeFile
Set TB = ThisWorkbook.Worksheets(1)
Open exportfile For Output As #Dateinummer
For z = 1 To TB.UsedRange.Rows.Count
If Cells(z, 2).Value = Text Then SL = 10 Else SL = 6
For s = 1 To SL
TMP = TMP & CStr(TB.Cells(z, s).Text) & ";"
Next s
TMP = Left(TMP, Len(TMP) - 1)
Print #Dateinummer, TMP
TMP = ""
Next z
Close #Dateinummer
End Sub

Gruß
Heinz
Anzeige
AW: Blatt als CSV speichern und zurück
10.03.2005 09:11:49
bst
Morgen,
oder auch einfach so.
cu, Bernd
--
Option Explicit

Private Sub CommandButton1_Click()
Dim newname As String
newname = "d:\daten\" & ActiveSheet.Name
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=newname, FileFormat:=xlCSV
ActiveWorkbook.Close False
End Sub

Anzeige
AW: Blatt als CSV speichern und zurück
10.03.2005 09:22:50
MichaV
Hi Ihr beiden,
vielen Dank! Das ActiveSheet.Copy hat mir gefehlt. Das "selber-schreiben" der csv- Datei wollt ich ja gerade vermeiden, das macht Excel alleine schon ganz super.
Schönen Tag noch!
PS: FileFilter
10.03.2005 09:36:04
MichaV
Hallo,
eine kleine Frage noch, ist mir beim Rumprobieren aufgefallen:
Beim DateiÖffnen oder -Schließen Dialog kann man den FileFilter definieren. Das geht in VB auch mit mehreren Kriterien und sieht so aus: FileFilter="Text (*.txt)|*.txt|Bilder (*.bmp;*.ico)|*.bmp;*.ico"
In VBA funzt das nicht, kenn jemand eine Lösung für die Anzeige von mehreren Dateifiltern unter Verwendung von GetOpenFilename oder GetSaveFilename?
Gruß! -Micha
Anzeige
AW: PS: FileFilter
10.03.2005 09:47:23
bst
Hallo,
versuch mal sowas. Wenn Du damit allerdings Deine gerade abgespeicherten CSV-Datei
öffnen willst mache Dich auf eine unangenehme Überrraschung bereit.
Das wird nämlich ziemlich sicher nicht besonders gut funktionieren :-(
cu, Bernd
--
Option Explicit

Sub OpenMe()
Dim fname As Variant
Dim myFilter As String
myFilter = "Textdateien (*.txt),*.txt,Alle Dateien,*.*)"
fname = Application.GetOpenFilename(myFilter, , "Hallöchen")
If fname = False Then Exit Sub
MsgBox fname, vbInformation, "Öffne mich"
End Sub

Anzeige
AW: PS: FileFilter
10.03.2005 09:52:08
MichaV
Hi Bernd,
aber für den neu eingebauten Speicher- Dialog ist es doch hervorragend! Warum find ich sowas in der VBA- Hilfe nicht?
Vielen Dank und Gruß- Micha
AW: PS: FileFilter
10.03.2005 10:13:03
bst
Hallo Micha,
Speichern ist hier nicht das Problem. Sondern das Öffnen einer CSV-Datei.
Wie der Filefilter für mehrere Dateien zu setzen ist steht in meiner VBA-Hilfe nun schon drinne :-)
cu, Bernd
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

Blatt als CSV speichern und zurück


Schritt-für-Schritt-Anleitung

Um ein Excel-Tabellenblatt als CSV zu exportieren, kannst du die folgende VBA-Prozedur verwenden. Diese Methode ist besonders nützlich, wenn du ein Excel-Blatt als CSV exportieren möchtest, ohne dabei das Workbook-Format zu verlieren.

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge einen neuen Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub ExportToCSV()
    Dim strAlterName As String
    strAlterName = ActiveSheet.Name ' Blattnamen merken
    ChDrive ActiveWorkbook.Path ' Arbeitsverzeichnis auf Verzeichnis, in dem die Excel-Datei liegt
    ChDir ActiveWorkbook.Path

    On Error GoTo fehler
    ActiveWorkbook.SaveAs FileName:=strAlterName & ".csv", FileFormat:=xlCSV, CreateBackup:=False

    ' Alten Namen wiederherstellen
    Sheets(1).Name = strAlterName 
    Exit Sub

fehler:
    MsgBox "Datei wurde nicht gespeichert"
    Sheets(1).Name = strAlterName
End Sub
  1. Führe das Makro aus, um das aktive Tabellenblatt als CSV zu speichern.

Häufige Fehler und Lösungen

  • Fehler: CSV-Datei speichert Änderungen nicht
    Wenn du eine CSV-Datei speicherst, behalte im Hinterkopf, dass CSV-Dateien nur das aktive Blatt speichern. Änderungen an anderen Blättern gehen verloren.

  • Fehler: "Benanntes Argument nicht gefunden"
    Dieser Fehler tritt auf, wenn du versuchst, ActiveWorkbook.SaveCopyAs mit FileFormat:=xlCSV zu verwenden. Diese Methode erlaubt keine Dateiformat-Optionen. Nutze stattdessen ActiveWorkbook.SaveAs.


Alternative Methoden

Eine andere Möglichkeit, ein Tabellenblatt als CSV zu exportieren, ist die Verwendung der ActiveSheet.Copy-Methode:

Private Sub CommandButton1_Click()
    Dim newname As String
    newname = "C:\Pfad\Zu\Deiner\Datei\" & ActiveSheet.Name & ".csv"
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=newname, FileFormat:=xlCSV
    ActiveWorkbook.Close False
End Sub

Diese Methode erstellt eine Kopie des aktiven Blattes und speichert es als CSV.


Praktische Beispiele

Hier sind zwei praktische Beispiele, wie du ein Excel-Blatt als CSV speichern kannst:

  1. Einfaches Beispiel mit InputBox:
Sub Write_Csv()
    Dim F As Integer
    Dim fname As String
    F = FreeFile
    fname = InputBox("Gib den Dateinamen mit Pfad ein:", "Bitte Dateinamen eingeben:")
    If fname <> "" Then
        Open fname For Output As #F
        ' Hier kommt der Code zum Schreiben der CSV-Daten
        Close #F
    End If
End Sub
  1. Direktes Speichern in einem bestimmten Pfad:
Sub csvSpeichern()
    Dim exportfile As String
    exportfile = "C:\test.csv"
    Dim Dateinummer As Integer
    Dateinummer = FreeFile
    Open exportfile For Output As #Dateinummer
    ' Hier kommt der Code zum Schreiben der CSV-Daten
    Close #Dateinummer
End Sub

Tipps für Profis

  • Nutze FileFilter in VBA: Du kannst den FileFilter in Dialogen verwenden, um die Dateiauswahl zu steuern. Beispiel:
Dim myFilter As String
myFilter = "Textdateien (*.txt),*.txt,Alle Dateien,*.*"
fname = Application.GetOpenFilename(myFilter, , "Wähle eine Datei")
  • Automatisiere den Export: Erstelle ein Makro, das den Export automatisch ausführt, wenn du die Datei speicherst.

FAQ: Häufige Fragen

1. Wie kann ich ein Excel-Tabellenblatt als CSV exportieren?
Du kannst dies mit der SaveAs-Methode tun, indem du FileFormat:=xlCSV verwendest.

2. Was passiert mit meinen Daten, wenn ich als CSV speichere?
CSV speichert nur das aktive Blatt. Alle Formatierungen und Formeln gehen verloren, und das Blatt wird als reiner Text gespeichert. Wenn du mehrere Blätter hast, musst du sie einzeln speichern.

3. Kann ich ein Makro verwenden, um ein CSV-Dateiformat zu speichern?
Ja, du kannst ein Excel-Makro verwenden, um dein Tabellenblatt als CSV zu speichern, indem du die oben genannten Methoden und Codes anwendest.

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