Excel Button: Tabelle speichern nur mit Werten

M

McMoneysack91

Gast
Liebe Freunde,

ich habe eine Excel-Tabelle, welche ihre Werte aus Kalkulationen aus anderen Tabellen bezieht. Dementsprechend sind in die jeweiligen Felder nicht bloß Zahlen eingetragen, sondern eben Formeln wie =SUMME(), =HEUTE() etc.

Wenn ich diese Tabelle jetzt einfach so speichere, weil ich die Werte DIESES TAGES recherchefähig machen möchte, werden die Formeln ja mit übernommen und verändern sich weiter. Da ich gestern schnell eine Lösung brauchte, habe ich einen Button erstellt, die Tabelle erstmal als PDF zu speichern.

Der Button sieht so aus:

Sub Speichern_PDF()

Dim Datei As String
Datei = "C:\usr\" & "Test_" & Format(Date, "DD.MM.YYYY") & ".pdf"
ActiveSheet.Range("A1:K38").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Datei, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End Sub


Der Pfad ist jetzt erstmal nur ein Testpfad hier fürs Forum. Auf diese Weise wird das aktuelle Tabellenblatt als PDF gespeichert, und die Datei sogleich mit Datum der Speicherung versehen.

Wie kriege ich den Button nun umgemünzt, dass ich mit einem Klick die Speicherung wie oben bei der PDF durchführe, nur eben dass alle Werte die in Tabellen stehen auch "bloß" als Werte übernommen werden. Statt =HEUTE() dann das wirkliche Datum des Tages, statt der Summe aus Zellen wirklich nur die Zahl?
 
Excel kann doch von Haus aus pdf, oder?

Als einfache Lösung könntest du die Tabelle kopieren und dann per "nur Werte und Quellformatierung" in ein neues Blatt einfügen.
 
Genau, PDF kann Excel von Haus aus. Der Button erleichtert es einem in dem Sinne, dass er sofort in ein vorgefertigtes Laufwerk speichert und direkt mit passendem Datum versieht.

Aber PDF ist ja nur eine Notlösung gewesen. Die Tabellen müssen weiter analysefähig bleiben, daher kommt PDF nicht in Frage und es muss schon eine Tabelle sein. Nur eben ohne Formeln sondern mit den nackten Werten. Und das am besten per Buttonklick.
 
Du musst die Funktion, das sich Formeln automatisch aktualisieren evtl. ausschalten? Ob das "dauerhaft" geht, kann ich grad nicht sagen.

Alternativ lass durch Dein Script ein XLSX in Kopie speichern und ersetze vorher das HEUTE() mit dem fixen Datum?
 
Eureka! Hoffentlich...

ich habe folgenden VBA-Script aus dem Netz ausgegraben:

Sub FixNeuesBlatt()
Dim Neuer_Dateiname
Dim i As Integer
Rem kopiert ganzes Blatt in neue Mappe, mit Formeln
ActiveSheet.Copy
Rem in neuer Mappe alle Zellen kopieren
Cells.Copy
Rem in neuer Mappe A1 wählen
Range("A1:K38").Select
Rem dort nur die Werte einfügen
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Rem Kopiermodus beenden (Laufrahmen beenden)
Application.CutCopyMode = False
Rem s.o.
Range("A1:K38").Select
ActiveWorkbook.SaveAs Filename:="C:\usr\" & "Test_" & Format(Date, "YYYY.MM.DD") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub


Auf diese Weise wird vermutlich für einen kurzen Moment ein neues Blatt erstellt, NUR mit Werten, ohne Formeln und im gewünschten Pfad gespeichert. Es klappt auch in der Tat, dass nur Werte übernommen werden. In meiner Ursprungstabelle wurde das Datum mit =HEUTE() ermittelt, in der exportierten Tabelle steht einfach stumpf 13.01.2022. Also exakt, was ich wollte.

Jetzt muss ich in diesem Script nur noch schauen, was ich nicht brauche. Wobei...kann ihn eigentlich so lassen, solange er funktioniert und alles andere nicht stört.


====

EDIT

Einziges Problem ist noch, dass beim Speichern folgende Meldung kommt:

Meldung.png


Für mich ist das im Grunde nichts Wildes, aber für die Mitarbeiter, die damit arbeiten werden könnte das wie eine abschreckende Fehlermeldung sein. Ist in dem obig genannten Code etwas, das diese Meldung verursacht? Kann ich da was gegen tun?

Oder soll ich einfach eine kleine Infotafel einbauen, die besagte "bei der nächsten Meldung auf 'Weiter' klicken"?
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: Nitschi66
Bzgl. dem Warnhinweis:
Der Code speichert als ".xls". Probier mal als ".xlsx", vllt. reicht das schon.
 
Entweder gibt es bei der Methode save einen parameter, der Meldungen unterdrückt oder über eine allgemeine Einstellung wie
Application.enableerrors = false
forcieren. Nach dem speichern aber wieder aktivieren, sonst doof ;)
 
Zurück
Oben