Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1628to1632
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA - Tabellen-Formeln durch Werte ersetzen
19.06.2018 16:28:11
Christian
Hallo miteinander,
ich habe jetzt sehr lange recherchiert, leider aber nichts gefunden, was mir bei meiner HERAUSFORDERUNG großartig weiterhilft.
Ich suche nach einer Möglichkeit per CommandButton oder per manuelle Eingabe in Zelle XY, bei 4 meiner Tabellenblätter (innerhalb der gleichen Arbeitsmappe) ausnahmslos alle Formeln bzw. Inhalte durch Werte zu ersetzen.
Das Ganze soll in einer Kopie der Arbeitsmappe ausgeführt werden und dann mit dem Namen der Originaldaten plus dem derzeitigen Datum unter Pfad X gespeichert werden.
Anschließend sollen beide Dateien (Original & Kopie) beendet werden.
Geht sowas? Gibt es jemand der einen Ansatz hat, ich wäre um jede Hilfe dankbar.
Das mit unter Pfad X speichern und das Beenden der Dateien würde ich vermutlich noch hinbekommen, beim Rest sieht es leider schon "mau" aus.
Viele liebe Grüße,
Christian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Tabellen-Formeln durch Werte ersetzen
19.06.2018 16:31:27
Hajo_Zi
Hallo Christian,
schaue hier
http://hajo-excel.de/vba_dateikopie.htm

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: VBA - Tabellen-Formeln durch Werte ersetzen
19.06.2018 16:50:36
Christian
Super, vielen Dank Hajo_Zi! Das sieht vielversprechend aus :-).
Ich werde mich mal ranmachen und versuchen das auf meine Situation zu übertragen. Sollte ich Rückfragen, würde es mich freuen, wenn Ihr gnädig mit mir seid - VBA gehört nicht zu meinen Stärken ...
Viele Grüße,
Christian
Danke für Rückmeldung oT
19.06.2018 16:53:08
Hajo_Zi
AW: VBA - Tabellen-Formeln durch Werte ersetzen
19.06.2018 21:16:36
Barbaraa
Hallo Christian,
Man kann händisch Werte durch Formeln einfügen mit Einfügen-Werte.
Willst Du es mit einem Makro versuchen? Dann probier mal das:
Sub NurDatenSpeichern()
Dim Blatt As Worksheet
Dim iPos As Integer
Dim sName As String
sName = ThisWorkbook.Name
iPos = InStrRev(sName, ".")
sName = Left(sName, iPos - 1) & " " & Format(Date, "yyymmdd") & ".xlsx"
Worksheets(Array("Apfel", "Banane")).Copy       '   Anpassen
With ActiveWorkbook
For Each Blatt In .Worksheets
With Blatt.Cells
.Copy
.PasteSpecial Paste:=xlValues
End With
Next Blatt
Application.DisplayAlerts = False
.SaveAs Filename:=ThisWorkbook.Path & "\" & sName, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
.Close
End With
ThisWorkbook.Close
End Sub
Damit werden die Blätter "Apfel" und "Banane" (musst du anpassen) in eine neue Datei kopiert,
dann die Formeln durch ihre Ergebnisse ersetzt,
dann diese neue Datei im selben Pfad mit selben Namen plus Datum gespeichert,
dann die Originaldatei gespeichert.
Willst Du einen anderen Pfad, dann ersetze
ThisWorkbook.Path
mit zB
"C:\MeinPfad"
Hilft das?
LGB
Anzeige
AW: VBA - Tabellen-Formeln durch Werte ersetzen
20.06.2018 13:07:31
Q94
Hallo Barbaraa, Hallo miteinander!,
ich habe deinen Beitrag leider jetzt gerade erst gesehen, wobei vllt. war das auch gut so.
Habe mich jetzt mal als Frischling daran versucht selbst den Code hinzubekommen - mit Hilfe von Hajo_Zi's Datei.
Wenn jemand Lust hätte und mir sagen könnte, was ich alles falsch gemacht habe, wäre ich zusätzlich sehr dankbar.
Immerhin ist mein Ziel irgendwann selbst solche Codes erstellen zu können.
Ich werde aber sicherlich deine getane Arbeit nicht mit Füßen treten, Babaraa.
Werde sofort den Code probieren und dann nochmals eine Rückmeldung geben.
Vielen Dank für deine Hilfe schon einmal im Voraus, ich bin sicher das wird damit klappen :-).
Nachfolgend noch mein Code - bitte nicht lachen, es werden ziemlich offenkundige Fehler enthalten sein:
Private Sub CommandButton3_Click()
Dim i As Integer, x As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
.Copy
ActiveWorkbook.ExportAsFixedFormat Type:=52, Filename:= _
"\\..\..\..\..\" & Format(Date, "YYYYMMDD") & " " _
& Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1) _
& Format(Date, "YYYYMMDD") & ".xlsm"
x = Worksheets.Count
For i = 2 To x                     ' ab Tabelle 2 bis x
With Sheets(i).Cells
.Copy
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
MsgBox "Tabelle gespeichert!"
End With
Cells(1, 1).Select
Next i
End With
ActiveSheet.OLEObjects("CommandButton3").Delete ' Schalter löschen
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Viele Grüße,
Christian
Anzeige
AW: VBA - Tabellen-Formeln durch Werte ersetzen
20.06.2018 13:36:31
Q94
Sorry für den Doppelpost, ich finde leider keine Edit-Möglichkeit.
Hallo Barbaraa,
dein Code funktioniert wunderbar! Nochmals explizit vielen Dank für deine Hilfe.
Es gibt nur ein paar Kleinigkeiten, die noch anders haben wollen würde, was ich auch versucht habe in meinem Code umzusetzen.
Das ist aber meine Schuld, dass du es nicht so eingebaut hast, da ich es nicht genauer definiert habe...
- Datei soll komplett kopiert und auch wieder als .xlsm gespeichert werden (laufen nämlich noch andere Makros drin, die ich noch benötige in der Kopie)
- der Inhalt aller Tabellen ab der Zweiten soll durch Werte ersetzen werden
- der CommandButton der diesen Code verwendet soll dann praktisch gelöscht werden in der Kopie-Version
- eine MsgBox soll bestätigen, dass der Vorgang abgeschlossen ist
Ich muss bei mir noch die Kopie schließen einfügen - wie bei Barbaraa's Code

Viele Grüße,
Christian
Anzeige
AW: VBA - Tabellen-Formeln durch Werte ersetzen
20.06.2018 23:25:02
Barbaraa
Hallo Christian,
Application.DisplayAlerts würde ich genau vor der Zeile abschalten, wo es gebraucht wird, und gleich danach wieder einschalten. Nur, um vielleicht andere unbekannte Meldungen, an die Du derzeit nicht denkst, nicht zu übersehen.
Du machst die Zeile .PasteSpecial Paste:=xlPasteValues NACH dem Umbenennen der Datei und lässt sie dann ungespeichert stehen. Überlegenswert wäre vielleicht die umgekehrte Reihenfolge.
Falls vielleicht dieser Code aus praktischen Gründen NICHT in die Tabelle soll, da er ja unnötigerweise auch mitkopiert wird: Du kannst ihn auch in einer eigenen Excel-Datei ablegen und von dort auf diese Original-Datei anwenden.
Dazu müssen beide Dateien, also diese eigene Datei und die Original-Datei (die mit den zu kopierenden Daten) geöffnet sein, die Original-Datei vorne aktiv.
Von da startest Du das Makro vom Menü Ansicht, Makros. Allerdings muss das Private vor dem Sub weg, sonst wird es nicht gelistet.
Und ThisWorkbook durch ActiveWorkbook ersetzen. Ersteres ist die Datei (= Mappe), in der das Makro steht, letzteres die gerade zum Zeitpunkt aktuelle Mappe, auf die sich das Makro ja beziehen soll.
Ich habe so eine eigene Excel-Datei mit einer Sammlung aller möglichen Makros, die ich immer wieder zu unterschiedlichen Anlässen brauche. Als allgemeine Vorlage gespeichert habe ich sie immer parat, ohne sie extra öffnen zu müssen (wie und wo musst du gugln). Ist aber nur sinnvoll, wenn ich die Mappen, auf die ich meine Makros anwende, nicht an Dritte weitergeben muss.
Freut mich, dass ich helfen konnte.
LGB
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige