Supportnet / Forum / Tabellenkalkulation
Kopieren von Verknüpfungen als Werte
Frage
Hallo Zusammen
Ich habe eine Tabelle die Formeln enthält.
Bzw die Zellen sind Zellbezüge aus anderen Tabellen.
Diese Datei wird wöchentlich unter einen anderen Namen abgespeichert.
Wenn ich nun per makro datei speichern unter erledigen lass, speichert er die Datei wieder mit den Zellbezügen.
Ich benötige aber in der abgespeicherten Datei nur noch die Werte, da sich die Daten in der Datei, auf welche sich die Daten beziehen, wieder neu beschrieben wird.
Jetzt wäre mir als Lösung noch eingefallen, dass ich meine Tabelle kompl kopiere und wieder als Wert einfüge und danach "speichern unter".
Nun meine Frage: Gibt es eine einfachere Lösung???
Welche z.B. bei dem save as Befehl sagt, dass er nur die Werte abspeichern soll??
Danke
gez.
Hardwarehacker
Antwort 1 von Saarbauer
Hallo,
mit "Kopieren" und anschliessend "Inhalte einfügen" "Werte"
müsste deinen Vorstellungen entsprechen und wäre als Makro auszuführen
Gruß
Helmut
mit "Kopieren" und anschliessend "Inhalte einfügen" "Werte"
müsste deinen Vorstellungen entsprechen und wäre als Makro auszuführen
Gruß
Helmut
Antwort 2 von Hardwarehacker
ja das mache ich ja im moment hatte ich ja auch oben schon erwähnt.
Meine Frage ist ob ich es in dem Befehl "save as" mit einbinden kann.
Bzw eine alternative zu deinem Vorgeschlagenen gibt.
Danke
gez.
Hardwarehacker
Meine Frage ist ob ich es in dem Befehl "save as" mit einbinden kann.
Bzw eine alternative zu deinem Vorgeschlagenen gibt.
Danke
gez.
Hardwarehacker
Antwort 3 von Ahnan
Hallo,
ich schon wieder ! So habe ich das für mich gelöst (Brauche ich auch des öfteren): Ich lasse das folgende Makro "über" meine Mappe mit den Verknüpfungen laufen:
Sub Alle_Links_umwandeln()
Dim Blatt As Worksheet
Dim Zelle As Range
For Each Blatt In ActiveWorkbook.Worksheets
Blatt.Activate
Set Zelle = Cells.Find(What:="[", After:=ActiveCell, _
LookIn:=xlFormulas, lookat:=xlPart, _
searchorder:=xlByRows, searchdirection:=xlNext, _
MatchCase:=False)
While TypeName(Zelle) <> "Nothing"
Zelle.Activate
Zelle.Formula = Zelle.Value
Set Zelle = Cells.FindNext(After:=ActiveCell)
Wend
Next Blatt
End Sub
Dieses Makro wandelt alle externe Verknüpfungen in allen Tabellenblättern der aktiven Mappe in Festwerte um. Dieses Makro lege ich auf einen Button plus diese Zeile:
[b]
ActiveWorkbook.SaveAs "C:\WINDOWS\Desktop\" & "Sicherung Mappe vom " & Format(Now, "DD.MM.YY") & "_" & Format(Now, "hh.mm.ss") & " Uhr" & ".xls"
Damit sind in der Kopie schonmal nur Festwerte.
Dann darf in dieser Kopie natürlich kein Code vorhanden sein (Also der obige Code ist ja nun auch in der Kopie). Deshalb lösche ich mit einem Makro sämtlichen Code aus der Kopie:
Sub Sämtlichen_Code_löschen()
Dim VBA_Code
With ActiveWorkbook.VBProject
For Each VBA_Code In .VBComponents
Select Case VBA_Code.Type
Case 1, 2, 3: .VBComponents.Remove .VBComponents(VBA_Code.Name)
Case 100
With VBA_Code.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
Sheets("Tabelle1").Shapes("CommandButton" & 1).Delete
ActiveWorkbook.Save
End Sub
Diese Zeile im obigen Makro:
Sheets("Tabelle1").Shapes("CommandButton" & 1).Delete
wird gebraucht, um den Button, mit dem ich die Kopie (in der Originaldatei) erstellt habe, ebenfalls zu löschen ! Und natürlich muss die Kopie noch gespeichert werden, damit am Ende nur Festwerte, ohne VBA-Code und Button in der erstellten Kopie vorhanden sind.
Also insgesamt sieht mein Code dann so aus:
Sub Kopie_ohne_Verknüpfungen()
Dim Blatt As Worksheet
Dim Zelle As Range
Dim VBA_Code
For Each Blatt In ActiveWorkbook.Worksheets
Blatt.Activate
Set Zelle = Cells.Find(What:="[", After:=ActiveCell, _
LookIn:=xlFormulas, lookat:=xlPart, _
searchorder:=xlByRows, searchdirection:=xlNext, _
MatchCase:=False)
While TypeName(Zelle) <> "Nothing"
Zelle.Activate
Zelle.Formula = Zelle.Value
Set Zelle = Cells.FindNext(After:=ActiveCell)
Wend
Next Blatt
ActiveWorkbook.SaveAs "C:\WINDOWS\Desktop\" & "Sicherung Mappe vom " & Format(Now, "DD.MM.YY") & "_" & Format(Now, "hh.mm.ss") & " Uhr" & ".xls
With ActiveWorkbook.VBProject
For Each VBA_Code In .VBComponents
Select Case VBA_Code.Type
Case 1, 2, 3: .VBComponents.Remove .VBComponents(VBA_Code.Name)
Case 100
With VBA_Code.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
Sheets("Tabelle1").Shapes("CommandButton" & 1).Delete
ActiveWorkbook.Save
End Sub[/b]
Was du angleichen musst:
Den Pfad (Save as) für die Kopie u. den Buttonnamen (bei mir Button1 in Tabelle1), mit dem du das Makro startest.
Also mir leistet das Makro wertvollen Dienst.
Vielleicht hilfts
Gruss
Mir leistet das Makro wertvollen Dienst.
ich schon wieder ! So habe ich das für mich gelöst (Brauche ich auch des öfteren): Ich lasse das folgende Makro "über" meine Mappe mit den Verknüpfungen laufen:
Sub Alle_Links_umwandeln()
Dim Blatt As Worksheet
Dim Zelle As Range
For Each Blatt In ActiveWorkbook.Worksheets
Blatt.Activate
Set Zelle = Cells.Find(What:="[", After:=ActiveCell, _
LookIn:=xlFormulas, lookat:=xlPart, _
searchorder:=xlByRows, searchdirection:=xlNext, _
MatchCase:=False)
While TypeName(Zelle) <> "Nothing"
Zelle.Activate
Zelle.Formula = Zelle.Value
Set Zelle = Cells.FindNext(After:=ActiveCell)
Wend
Next Blatt
End Sub
Dieses Makro wandelt alle externe Verknüpfungen in allen Tabellenblättern der aktiven Mappe in Festwerte um. Dieses Makro lege ich auf einen Button plus diese Zeile:
[b]
ActiveWorkbook.SaveAs "C:\WINDOWS\Desktop\" & "Sicherung Mappe vom " & Format(Now, "DD.MM.YY") & "_" & Format(Now, "hh.mm.ss") & " Uhr" & ".xls"
Damit sind in der Kopie schonmal nur Festwerte.
Dann darf in dieser Kopie natürlich kein Code vorhanden sein (Also der obige Code ist ja nun auch in der Kopie). Deshalb lösche ich mit einem Makro sämtlichen Code aus der Kopie:
Sub Sämtlichen_Code_löschen()
Dim VBA_Code
With ActiveWorkbook.VBProject
For Each VBA_Code In .VBComponents
Select Case VBA_Code.Type
Case 1, 2, 3: .VBComponents.Remove .VBComponents(VBA_Code.Name)
Case 100
With VBA_Code.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
Sheets("Tabelle1").Shapes("CommandButton" & 1).Delete
ActiveWorkbook.Save
End Sub
Diese Zeile im obigen Makro:
Sheets("Tabelle1").Shapes("CommandButton" & 1).Delete
wird gebraucht, um den Button, mit dem ich die Kopie (in der Originaldatei) erstellt habe, ebenfalls zu löschen ! Und natürlich muss die Kopie noch gespeichert werden, damit am Ende nur Festwerte, ohne VBA-Code und Button in der erstellten Kopie vorhanden sind.
Also insgesamt sieht mein Code dann so aus:
Sub Kopie_ohne_Verknüpfungen()
Dim Blatt As Worksheet
Dim Zelle As Range
Dim VBA_Code
For Each Blatt In ActiveWorkbook.Worksheets
Blatt.Activate
Set Zelle = Cells.Find(What:="[", After:=ActiveCell, _
LookIn:=xlFormulas, lookat:=xlPart, _
searchorder:=xlByRows, searchdirection:=xlNext, _
MatchCase:=False)
While TypeName(Zelle) <> "Nothing"
Zelle.Activate
Zelle.Formula = Zelle.Value
Set Zelle = Cells.FindNext(After:=ActiveCell)
Wend
Next Blatt
ActiveWorkbook.SaveAs "C:\WINDOWS\Desktop\" & "Sicherung Mappe vom " & Format(Now, "DD.MM.YY") & "_" & Format(Now, "hh.mm.ss") & " Uhr" & ".xls
With ActiveWorkbook.VBProject
For Each VBA_Code In .VBComponents
Select Case VBA_Code.Type
Case 1, 2, 3: .VBComponents.Remove .VBComponents(VBA_Code.Name)
Case 100
With VBA_Code.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
Sheets("Tabelle1").Shapes("CommandButton" & 1).Delete
ActiveWorkbook.Save
End Sub[/b]
Was du angleichen musst:
Den Pfad (Save as) für die Kopie u. den Buttonnamen (bei mir Button1 in Tabelle1), mit dem du das Makro startest.
Also mir leistet das Makro wertvollen Dienst.
Vielleicht hilfts
Gruss
Mir leistet das Makro wertvollen Dienst.

