Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
924to928
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
924to928
924to928
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formeln und Code sollen nicht mit kopiert werden

Formeln und Code sollen nicht mit kopiert werden
13.11.2007 19:46:00
Peter
Hallo liebe Excellaner,
der nachfolgende Code funktioniert einwandfrei, jedoch werden die Formeln in den Zellen und die VBA-Codes der Tabellen mit kopiert. Wie muss der Code geändert werden, dass nur Werte und keine VBA-Codes mitkopiert werden?

Public Sub Auslagern()
Application.ScreenUpdating = False
Worksheets("Turnierbericht").Visible = True
Worksheets(Array("Obedience", "WKKlasseBeginner", "WKKlasse1", "WKKlasse2", "WKKlasse3", " _
IdentListe", "TurnierBericht")).Copy
ActiveWorkbook.SaveAs "C:\Obedience\PSV1912Nbg\Daten\" & UserForm2.TextBox1.Value & "-" &  _
Date
ActiveWorkbook.Close
ThisWorkbook.Saved = True
End Sub


Vielen Dank für Hilfe
Peter S.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln und Code sollen nicht mit kopiert werd
13.11.2007 20:49:09
Erich
Hallo Peter,
probier mal

Option Explicit
Public Sub Auslagern2()
Dim wbkA As Workbook, strBL, ii As Integer, lngL As Long, rng As Range, jj As Integer
Application.ScreenUpdating = False
Worksheets("Turnierbericht").Visible = True
Set wbkA = ActiveWorkbook
strBL = Array("Obedience", "WKKlasseBeginner", "WKKlasse1", "WKKlasse2", "WKKlasse3", _
"IdentListe", "TurnierBericht")
Workbooks.Add xlWBATWorksheet
For ii = 0 To UBound(strBL)
If ii > 0 Then Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = strBL(ii)
With wbkA.Sheets(strBL(ii))
Set rng = .Cells.Find("*", .Cells(1, 1), xlValues, , xlByRows, xlPrevious)
If rng Is Nothing Then lngL = 1 Else lngL = rng.Row
ReDim hh(1 To lngL)
For jj = 1 To lngL
hh(jj) = .Rows(jj).RowHeight
Next jj
.Columns.Copy
End With
With Range("A1")
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
For jj = 1 To lngL
Rows(jj).RowHeight = hh(jj)
Next jj
Cells(1, 1).Select
Next ii
Application.ScreenUpdating = False
ActiveWorkbook.SaveAs "C:\Obedience\PSV1912Nbg\Daten\" & _
UserForm2.TextBox1.Value & "-" & Date
ActiveWorkbook.Close
ThisWorkbook.Saved = True
End Sub

Das Ganze ginge etwas schneller, wenn man statt der Spalten die (vielen) Zeilen kopiert
und die Spaltenbreiten nachher überträgt. Momentan ist es gerade umgekehrt (hatte ich schon).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Formeln und Code sollen nicht mit kopiert werd
13.11.2007 21:02:30
Peter
Hallo Erich,
habe Deinen Code ausprobiert; funktioniert leider nicht.
Im Ergebnis werden nur noch die Formatierungen kopiert, aber keine Werte der Tabellen
Gruß
Peter S.
PS: Rückmeldungen sind bei mir obligatorisch

AW: Formeln und Code sollen nicht mit kopiert werd
13.11.2007 21:18:32
Erich
Hallo Peter,
das verstehe ich nicht. Probier das doch mal mit dieser Beispielmappe:
https://www.herber.de/bbs/user/47680.xls
Was ist bei dir anders?
Grüße von Erich aus Kamp-Lintfort
P.S.: "Rückmeldung wäre nett!" steht bei mir immer drunter... Danke für deine Rückmeldung!

Anzeige
AW: Formeln und Code sollen nicht mit kopiert werd
13.11.2007 22:12:37
Erich
Hallo Peter,
zu meiner Mappe ein kürzerer und schnellerer Code, der es auch tut:

Public Sub Auslagern0()
Dim wbkA As Workbook, strBL, ii As Integer
'   Application.ScreenUpdating = False
'   Worksheets("Turnierbericht").Visible = True
Set wbkA = ActiveWorkbook
'   strBL = Array("Obedience", "WKKlasseBeginner", "WKKlasse1", "WKKlasse2", _
"WKKlasse3", "IdentListe", "TurnierBericht")
strBL = Array("abc", "ddd", "hhh")
Workbooks.Add xlWBATWorksheet
For ii = 0 To UBound(strBL)
If ii > 0 Then Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = strBL(ii)
wbkA.Sheets(strBL(ii)).Rows.Copy
With Cells(1, 1)
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
End With
Cells(1, 1).Select
Next ii
Application.CutCopyMode = False
'   Application.ScreenUpdating = False
'   ActiveWorkbook.SaveAs "C:\Obedience\PSV1912Nbg\Daten\" & _
UserForm2.TextBox1.Value & "-" & Date
'   ActiveWorkbook.Close
'   ThisWorkbook.Saved = True
End Sub

Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Formeln und Code sollen nicht mit kopiert werd
14.11.2007 17:51:00
Peter
Hallo Erich,
auch Dir vielen vielen Dank für Deine Mühe; der zweite Code funzt ebenfalls prima - Super Hilfe auch von Dir - hoffe ich kann ich mal revanchieren
Beste Grüße aus dem Frankenland
Peter S.

AW: Formeln und Code sollen nicht mit kopiert werd
14.11.2007 17:53:00
Hajo_Zi
Hallo Peter,
ich lese aus Deinem Beitrag nicht was offen ist?

AW: Formeln und Code sollen nicht mit kopiert werd
14.11.2007 18:06:23
Erich
Hallo Peter,
danke für deine Rückmeldung!
Einen (hier vielleicht nicht wesentlichen) Unterschied gibt es zwischen Sepps und meinem Code:
Bei Sepp wird alles kopiert (auch Objekte wie z. B. Buttons), nur Code und Formeln werden eliminiert.
Bei meinem Code werden nur Werte und Formate übertragen, alles andere bleibt weg.
Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Formeln und Code sollen nicht mit kopiert werden
13.11.2007 21:05:00
Josef
Hallo Peter,
ungetestet.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub Auslagern()
Dim objWs As Worksheet

On Error GoTo ErrExit
GMS

Worksheets("Turnierbericht").Visible = True

Worksheets(Array("Obedience", "WKKlasseBeginner", "WKKlasse1", "WKKlasse2", "WKKlasse3", "IdentListe", "TurnierBericht")).Copy

With ActiveWorkbook
    
    For Each objWs In .Worksheets
        'Formeln in Werte umwandeln
        objWs.UsedRange = objWs.UsedRange.Value
        
        'Code entfernen
        With .VBProject.VBComponents(objWs.CodeName).CodeModule
            .DeleteLines 1, .CountOfLines
        End With
    Next
    
    .SaveAs "C:\Obedience\PSV1912Nbg\Daten\" & UserForm2.TextBox1.Value & "-" & Date
    .Close
End With

ThisWorkbook.Saved = True

ErrExit:
GMS True
End Sub

Sub GMS(Optional ByVal Modus As Boolean = False)
Static lngCalc As Long

With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    If Modus Then
        .Calculation = IIf(lngCalc <> 0, lngCalc, xlCalculationAutomatic)
    Else
        lngCalc = .Calculation
        .Calculation = xlCalculationManual
    End If
    .Cursor = IIf(Modus, -4143, 2)
    .CutCopyMode = False
End With

End Sub

Gruß Sepp

Anzeige
AW: Formeln und Code sollen nicht mit kopiert werden
14.11.2007 17:48:00
Peter
Servus Sepp,
allerhöchsten Respekt - für nen ungetesteten Code - das Ding funktioniert zu 100% und das Ergebnis ist genau so wie ich es mir vorstelle.
Vielen Dank aus Franken
Peter S.

AW: Formeln und Code sollen nicht mit kopiert werden
14.11.2007 18:13:00
Peter
Hallo Sepp,
noch eine Frage dazu: Wie bereits geschildert funktioniert der Code bestens, aber wenn ich im VBA-Editor auf Debuggen gehe bekomme ich jetzt die Fehlermeldung
Benutzerdefinierter Typ nicht definiert
jedoch ohne dass eine Zeile als Fehlerquelle gelb unterlegt wird. Ich vermute, dass in Deinem Code irgendetwas eine Registrierung in der Objektbibliothek benötigt.
Kann das sein?
Gruß
Peter S.

Anzeige
AW: Formeln und Code sollen nicht mit kopiert werden
14.11.2007 23:00:00
Josef
Hallo Peter,
kann ich nicht nachvollziehen.
Gruß Sepp

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige