Ganze tabelle in .csv Speichern.
Hallo.
Ich würde gern meine Exceldatei(*.xls) in *.csv speichern. Das Problem ist nur das ich nicht die ganze Datei speichern kann sondern nur die einzelnen Tabellenblätter. Da ich aber keine Lust habe die ganzen Tabellenblätter einzeln zu speichern würde ich das gerne so machen.
Also jetzt mal zur Frage gibt es eine Möglichkeit das so zu speichern wenn nicht geht das über ein Makro? Wenn ja wie würde das Makro aussehen?
Ich würde gern meine Exceldatei(*.xls) in *.csv speichern. Das Problem ist nur das ich nicht die ganze Datei speichern kann sondern nur die einzelnen Tabellenblätter. Da ich aber keine Lust habe die ganzen Tabellenblätter einzeln zu speichern würde ich das gerne so machen.
Also jetzt mal zur Frage gibt es eine Möglichkeit das so zu speichern wenn nicht geht das über ein Makro? Wenn ja wie würde das Makro aussehen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 37551
Url: https://administrator.de/contentid/37551
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
11 Kommentare
Neuester Kommentar
Du hast es schon erkannt, das ganze geht nur über ein Makro.
Tabellenblätter auslesen, jedes als Objekt deklarieren, als CSV speichern, feddisch
Lonesome Walker
Tabellenblätter auslesen, jedes als Objekt deklarieren, als CSV speichern, feddisch
Lonesome Walker
Hi,
versuchs mal so:
Psycho
versuchs mal so:
Sub speichern_als()
Dim I_Sheets As Integer
Dim F_Name As String
For I_Sheets = 1 To Sheets.Count
F_Name = "E:\Daten\" + Sheets(I_Sheets).Name + ".csv"
Sheets(I_Sheets).SaveAs Filename:=F_Name, FileFormat:= _
xlCSV, CreateBackup:=False
Next I_Sheets
End Sub
Psycho
Moin,
die Pfadangabe muss natürlich angepasst werden. Das ginge evtl. mit einer InputBox:
Einbinden geht folgendermassen:
Menü Extras -> Makro -> Makros -> hier den Namen Eingeben speichern_als -> Erstellen
jetzt hast du den VBA-Editor vor dir und der Teil
steht schon da. Den Rest kopierst du dann rein!
Zum Aufrufen kannst du eine Tastenkombination vergeben oder du positionerst eine Autoform (Symbolleiste Zeichnen) auf dem Blatt und weist dann über das Kontextmenü (rechte Maustaste) das entsprechende Makro zu.
Psycho
die Pfadangabe muss natürlich angepasst werden. Das ginge evtl. mit einer InputBox:
Sub speichern_als()
Dim I_Sheets As Integer
Dim F_Name As String
Dim F_Path As String
F_Path = Application.InputBox("Pfad angeben")
For I_Sheets = 1 To Sheets.Count
F_Name = F_Path + Sheets(I_Sheets).Name + ".csv"
Sheets(I_Sheets).SaveAs Filename:=F_Name, FileFormat:= _
xlCSV, CreateBackup:=False
Next I_Sheets
End Sub
Einbinden geht folgendermassen:
Menü Extras -> Makro -> Makros -> hier den Namen Eingeben speichern_als -> Erstellen
jetzt hast du den VBA-Editor vor dir und der Teil
Sub speichern_als()
End Sub
steht schon da. Den Rest kopierst du dann rein!
Zum Aufrufen kannst du eine Tastenkombination vergeben oder du positionerst eine Autoform (Symbolleiste Zeichnen) auf dem Blatt und weist dann über das Kontextmenü (rechte Maustaste) das entsprechende Makro zu.
Psycho
Moin,
also erstmal zur Problematik des Zusammenführens (hast du vorher nicht erwähnt!).
Ich habe mal vorausgesetzt, dass die Tabellen gleich aufgebaut sind.
Hier wird eine temporäre Tabelle erstellt, in der die Werte aus allen Blättern zusammengefasst werden. Diese wird dann als *.csv gespeichert. Das Blatt wird hinterher wieder gelöscht.
Über die anderen Fragen muss ich noch nachdenken - bin auch kein Experte!
Psycho
also erstmal zur Problematik des Zusammenführens (hast du vorher nicht erwähnt!).
Ich habe mal vorausgesetzt, dass die Tabellen gleich aufgebaut sind.
Hier wird eine temporäre Tabelle erstellt, in der die Werte aus allen Blättern zusammengefasst werden. Diese wird dann als *.csv gespeichert. Das Blatt wird hinterher wieder gelöscht.
Sub zusammenfuehren_speichern()
Dim I_Sheets As Integer ' Anzahl der Blätter
Dim F_Name As String ' Pfad und Dateiname
F_Name = InputBox("Pfad und Dateinamen angeben") ' Hier kompletten Pfad und Namen angeben!
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count) ' Temporäre Tabelle erstellen
' und ans Ende setzen
For I_Sheets = 1 To Sheets.Count - 1 ' Zählschleife für Anzahl der Blätter
' ohne das neu Erstellte
Sheets(I_Sheets).Select ' Tabellenblatt wählen
If I_Sheets = 1 Then Range("A1").Select Else Range("A2").Select ' Im ersten Blatt
' den Kopf mit kopieren
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select ' Tabelle bis zu letzten Zelle
' markieren, die Wert enthält
Selection.Copy ' Alles in Zwischenablage kopieren
Sheets(Sheets.Count).Select ' Temporäre Tabelle wählen
If I_Sheets = 1 Then Range("A1").Select Else Range("A65536").End(xlUp).Offset(1, 0).Select
' Ende der Tabelle suchen
ActiveSheet.Paste ' Werte einfügen
Next I_Sheets ' Ende der Zählschleife
ActiveWorkbook.SaveAs Filename:=F_Name, FileFormat:=xlCSV _
, CreateBackup:=False ' Temporäre Tabelle als *.csv speichern
ActiveWindow.SelectedSheets.Delete ' Temporäre Tabelle wieder löschen
End Sub
Über die anderen Fragen muss ich noch nachdenken - bin auch kein Experte!
Psycho
Hi,
hier wird erklärt, wie man Makros global verfügbar macht.
[Edit: Gib mal unter der InputBox-Zeile noch folgendes ein:
]
Psycho
hier wird erklärt, wie man Makros global verfügbar macht.
[Edit: Gib mal unter der InputBox-Zeile noch folgendes ein:
If F_Name = "" Then Exit Sub
Psycho
...kein Thema! Setzt aber bitte den Beitrag auf "Gelöst"
und dir auch noch einen schönen Tag!
Psycho
und dir auch noch einen schönen Tag!
Psycho