PDA

Vollständige Version anzeigen : VBA speichern unter kopie csv


volker1990
25.08.2017, 10:32
Hallo zusammen,

ich habe wieder einmal eine Frage, dieses mal an die VBA Spezialisten.

Ich habe eine Datei in welcher ich ein Makro anlegen muss, programmiert auf eine Schaltfläche. Per Klick auf diese Schaltfläche soll automatisch in einem von mir vordefiniertem Pfad mit automatischem Datumsanhang eine CSV Datei gespeichert werden. Die originale xlsm Datei soll davon unberührt bleiben, soll sich aber nach speichern der "csv" Datei im idealfall schließen.

Ich kenne mich leider mit VBA absolut gar nicht aus. Fertige Codes welche ich hier gefunden habe scheinen nicht die Lösung meines Problems zu sein.

Liebe Grüße

silcono
25.08.2017, 10:37
Es geht hier rein nur um den Export als CSV?

Hier, das könnte dir helfen:


Sub SaveAsCSV ()
'Speichert deine Tabelle als CSV ab
Worksheets("Tabelle1").SaveAs Filename:="C:UsersNAMEDesktopTestCSV.csv", FileFormat:=xlCSV, local:=True
End Sub


Grüße
silcono

volker1990
25.08.2017, 10:52
Hi, ich denke ja. Also meine Urpsrungstabelle bezieht sich deren Daten mit vielen SVERWEISEN aus einer anderen Tabelle. Der Grund warum ich es als CSV speichern möchte ist der, weil ich die Daten nicht als Formel sondern als reine Werte ausgegeben haben möchte. Aber in einer seperaten Datei unter angegebenem Pfad mit Datumendung. Eine andere Möglichkeit wäre in dem Makro einfach alle Daten in der Tabelle als reine Werte zunächst einzufügen und das dann als xlsx in einer seperaten Datei zu speichern. Aber die Makros und die Schaltfläche müssen dann in dieser Datei draußen sein.

silcono
25.08.2017, 10:58
ah ok, das sind schon mehr Informationen. Hast du mal eine Beispieldatei?


Also wie gesagt, der beigefügte Code, bewirkt schon mal das Speichern als CSV:


Sub SaveAsCSV ()
'Speichert deine Tabelle als CSV ab
Worksheets("Tabelle1").SaveAs Filename:="C:UsersNAMEDesktopTestCSV.csv", FileFormat:=xlCSV, local:=True
End Sub


Das Datum kann man natürlich auch noch mit dran hängen bzw. kann man das alles noch ausschmücken.

Grüße

volker1990
25.08.2017, 11:05
Wenn in dieses Makro nun per Klick auf eine Schaltfläche ausüben möchte, melde er mir "Index außerhalb des Bereichs". Den Speicherpfad hatte ich zuvor angepasst. Eine Beispiel-Datei habe ich leider nicht, aber der Inhalt spielt hier glaube ich auch keine Rolle. Wichtig ist lediglich, dass die Werte anhand von Formeln ermittelt werden. Die gespeicherte Kopie soll nun automatisch die Liste als reine "werte-Liste" speichern, deshalb meine Idee als csv

Ich habe also folgendes geändert: Filename:="F:Ordner1()Ordner2()Dateiname.csv" Den Backslash musste ich hier im Forum umklammer, da er mir sonst warum auch immer nicht angezeigt wird.

silcono
25.08.2017, 11:09
Ach so, verstehe. Dir geht es nicht unbedingt um CSV. Hier geht es nur darum, dass du im Endergebnis eine Tabelle hast, die nur Werte beinhaltet.

Somit eigentlich dann ganz einfach, Makro-Recorder einschalten, die Werte mit den Formeln kopieren und nur als Wert wieder einfügen, speichern unter und fertig.

Also so (wurde mit dem Recorder aufgenommen und angepasst):

Sub test()

Worksheets("Tabelle1").Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:UsersNAMEDesktopMappe1_" & Format(Date, "yyyymmdd") & ".xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

End Sub


Hilft das?

volker1990
25.08.2017, 11:26
Hi Silcono, danke für deine Geduld, ich bin wirklich absoluter Neuling im VBA.

Ich habe das gerade mal versucht, allerdings scheint es bei mir nicht ganz zu klappen. Wenn ich das so tue, so geht mir das Makro doch in dem Moment verloren, in dem ich speichern unter sage. Also die Datei die ich dann speicher soll wenn nicht in csv in xlsx gespeichert werden. die datei mit den markos die xlsm soll bestehen bleiben und soll sich nicht überschreiben. Wenn ich nun also speichern unter mache und das ganze aufzeichne, so will das nicht ordnungsgemäß funktionieren.

silcono
25.08.2017, 11:39
Also wenn du den Ablauf ausführst, wird eine neue Mappe erstellt ("Mappe1_Datum.xls"). Du musst sonst nichts tun. Diese Mappe ist auch die aktuell geöffnete.

Wenn das Makro in einer Datei bestehen bleiben soll, musst du ein Modul einfügen und dort den Code eintragen, speichern.
Dieses Modul besteht dann auch in der neuen Mappe.

Gibt es eine Fehlermeldung oder sonstige auffällige Ereignisse? Ohne Beispiel oder Screenshots, ist das schwer zu ermitteln.

volker1990
25.08.2017, 12:03
Hi, ich habe jetzt nochmal etwas gespielt und getestet und siehe da es klappt. Danke dir vielmals! Nun muss ich das lediglich noch auf mehrere Tabellen anwenden und hoffe dass ich es nochmal hinbekomme ;-).

silcono
25.08.2017, 19:55
Kein Thema, bei Fragen gerne melden.
Grüße Silcono