Herbers Excel-Forum - das Archiv

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
Excel-Beispiele zum Thema "Blatt als CSV speichern und zurück"
Zelleingaben speichern Die "personl"-Arbeitsmappe ausgeblendet speichern
Formeln mit Zelladressen speichern Bestätigung beim Speichern unterdrücken.
Arbeitsmappe unter dem Text eines Zelleintrags speichern Einzelnes Tabellenblatt speichern
Mappe unter Zelldatum speichern Arbeitsmappe doppelt speichern
Arbeitsmappe unter Namen speichern Programmabbruch bei Überspeichernabfrage verhindern