Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: medic am Juni 15, 2012, 07:58:21 Vormittag
-
Hallo!
ich habe folgenden Code:
Sub Kopieren()
Dim rngZelle As Range
Dim arrTabellen()
Dim lngZaehler As Long
Dim wksTab As Worksheet
For Each rngZelle In Columns(1).SpecialCells(xlCellTypeConstants)
If UCase(rngZelle) = "X" Then
On Error Resume Next
Set wksTab = Worksheets(rngZelle.Offset(0, 1).Value)
On Error GoTo 0
If Not wksTab Is Nothing Then
ReDim Preserve arrTabellen(0 To lngZaehler)
arrTabellen(lngZaehler) = rngZelle.Offset(0, 1)
lngZaehler = lngZaehler + 1
End If
Set wksTab = Nothing
End If
Next rngZelle
Worksheets(arrTabellen()).Copy
End Sub
Damit wird aus einem Excelsheet die mit "X" markierten Arbeitsblätter in ein neues Excelsheet kopiert.
Nun habe ich festgestellt, dass nicht die Inhalte kopiert werden, sondern eine Verknüpfung zu dem ursprünglichen Excelsheet eingefügt wird. Dadurch ändert sich auch das neue Excelsheet, wenn in dem ursprünglichen sich Werte ändern.
Wie muss der Code geändert werden, dass nur die Inhalte (nur die Werte ohne Formlen) eingefügt werden?
-
Hi,
du musst im Anschluss an das Kopieren noch einmal in einer Schleife über alle kopierten Tabellenblätter laufen, die Zellen im benutzten Bereich kopieren und die Inhalte einfügen.
Bis später,
Karin
-
???? ähm, ja....äh ??? *verwirrt*
-
Hi,
du kopierst die Tabellen insgesamt in eine neue Arbeitsmappe, also so wie sie im Original sind mitsamt den Formeln. Wenn du allerdings nur die Werte haben willst, geht das nicht unmittelbar auf dem bisherigen Weg.
Du hast generell gesehen für solch ein Vorhaben folgende Möglichkeiten:
- du erstellst in der neuen Arbeitsmappe zuerst die entsprechende Anzahl an Tabellenblättern und kopierst dann die Zellen des benutzen Bereichs jedes einzelnen Tabellenblattes der Ursprungsmappe und fügst die Inhalte in der Zielmappe mittels PasteSpecial in das betreffende Tabellenblat ein. Der Name des Tabellenblattes muss dann noch an den Namen des Tabellenblattes der Ursprungsdatei angepasst werden.
- du verwendest den bisherigen Code und wandelst einfach in einer Schleife über alle Tabellenblätter der neuen Arbeitsmappe die Formeln in Werte um
Im letzteren Fall musst du den Code nur um diese Zeilen ergänzen:
For Each wksTab In ActiveWorkbook.Worksheets
wksTab.UsedRange.Copy
wksTab.UsedRange.PasteSpecial Paste:=xlValues
Next wksTab
Bis später,
Karin
-
Danke, hat geklappt!!!
Schönes Wochenende!!!