Blatt als CSV speichern und zurück

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Blatt als CSV speichern und zurück
von: MichaV
Geschrieben am: 10.03.2005 02:14:12
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 

     Code eingefügt mit Syntaxhighlighter 3.0

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
Bild

Betrifft: AW: Blatt als CSV speichern und zurück
von: Ramses
Geschrieben am: 10.03.2005 06:09:00
Hallo
Wenn du CSV haben willst, dann hast du CSV FileFormat :-)
Warum verwendest du nicht
ActiveWorkbook.SaveCopyAs
Gruss Rainer
Bild

Betrifft: AW: Blatt als CSV speichern und zurück
von: MichaV
Geschrieben am: 10.03.2005 08:02:33
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
Bild

Betrifft: AW: Blatt als CSV speichern und zurück
von: Heinz A. Wankmüller
Geschrieben am: 10.03.2005 08:58:06
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
Bild

Betrifft: AW: Blatt als CSV speichern und zurück
von: bst
Geschrieben am: 10.03.2005 09:11:49
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

Bild

Betrifft: AW: Blatt als CSV speichern und zurück
von: MichaV
Geschrieben am: 10.03.2005 09:22:50
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!
Bild

Betrifft: PS: FileFilter
von: MichaV
Geschrieben am: 10.03.2005 09:36:04
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
Bild

Betrifft: AW: PS: FileFilter
von: bst
Geschrieben am: 10.03.2005 09:47:23
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

Bild

Betrifft: AW: PS: FileFilter
von: MichaV
Geschrieben am: 10.03.2005 09:52:08
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
Bild

Betrifft: AW: PS: FileFilter
von: bst
Geschrieben am: 10.03.2005 10:13:03
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
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Blatt als CSV speichern und zurück"