Anzeige
Archiv - Navigation
1280to1284
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
Tabelle in neue Tabelle kopieren...
11.10.2012 12:07:20
Waldtraut
Hallo und guten Morgen im Forum,
ich möchte per UserForm Tabellenblätter auswählen und in eine neue Tabelle kopieren.
Den Code dazu habe ich mir "gegoogelt".
Allerdings werden wohl nur die Formeln, Werte und Formate kopiert (lt. Anmerkung).
Ich möchte aber die ausgewählten Tabellenblätter insgesamt kopieren.
Wer kann mir helfen und den Code dahingehend modifizieren? Danke für eure Hilfe!

Private Sub Tabellen_kopieren()
Dim wkbNeu As Workbook
Dim wksNeu As Worksheet
Dim strDateiName As String
Dim i As Integer, k As Integer
Dim Objekt As Shape
'Speichername und SpeicherstrPfad abfragen
strDateiName = ThisWorkbook.Path & "\Kopie von " & ThisWorkbook.Name
strDateiName = Application.GetSaveAsFilename(InitialFileName:=strDateiName, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.  _
_
xls), *.xls")
If strDateiName = "Falsch" Then Exit Sub
' Ausgewählte Tabellenblätter in die Neue Mappe kopieren
Application.ScreenUpdating = False
With Me.Blätter
i = Application.SheetsInNewWorkbook
'Application.SheetsInNewWorkbook = 1
Set wkbNeu = Workbooks.Add(1)
'Application.SheetsInNewWorkbook = i
For i = 0 To .ListCount - 1
If .Selected(i) Then
If k Then wkbNeu.Sheets.Add After:=wksNeu
k = k + 1
Set wksNeu = wkbNeu.Sheets(k)
wksNeu.Name = ThisWorkbook.Sheets(.List(i)).Name
ThisWorkbook.Sheets(.List(i)).UsedRange.Copy
With wksNeu.Cells(1)
.PasteSpecial xlPasteValues        ' überträgt Werte
.PasteSpecial xlPasteFormulas      ' überträgt Zellen mit Formeln
.PasteSpecial xlPasteFormats       ' überträgt Formate
.PasteSpecial xlPasteColumnWidths  ' überträgt Spaltenbreite
End With
Application.Goto Reference:=Cells(1)
Application.CutCopyMode = False
End If
Next i
End With
'Neue Mappe Speichern
wkbNeu.SaveAs Filename:=strDateiName
'ThisWorkbook.Close savechanges:=False
Unload Me
Application.ScreenUpdating = True
End Sub

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ups, meinte: Tabelle in neue Mappe kopieren...
11.10.2012 12:17:10
Waldtraut
Hallo und guten Morgen im Forum,
ich möchte per UserForm Tabellenblätter auswählen und in eine neue Tabelle kopieren.
Den Code dazu habe ich mir "gegoogelt".
Allerdings werden wohl nur die Formeln, Werte und Formate kopiert (lt. Anmerkung).
Ich möchte aber die ausgewählten Tabellenblätter insgesamt kopieren.
Wer kann mir helfen und den Code dahingehend modifizieren? Danke für eure Hilfe!
Private Sub Tabellen_kopieren()
Dim wkbNeu As Workbook
Dim wksNeu As Worksheet
Dim strDateiName As String
Dim i As Integer, k As Integer
Dim Objekt As Shape
'Speichername und SpeicherstrPfad abfragen
strDateiName = ThisWorkbook.Path & "\Kopie von " & ThisWorkbook.Name
strDateiName = Application.GetSaveAsFilename(InitialFileName:=strDateiName, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.   _
_
_
xls), *.xls")
If strDateiName = "Falsch" Then Exit Sub
' Ausgewählte Tabellenblätter in die Neue Mappe kopieren
Application.ScreenUpdating = False
With Me.Blätter
i = Application.SheetsInNewWorkbook
'Application.SheetsInNewWorkbook = 1
Set wkbNeu = Workbooks.Add(1)
'Application.SheetsInNewWorkbook = i
For i = 0 To .ListCount - 1
If .Selected(i) Then
If k Then wkbNeu.Sheets.Add After:=wksNeu
k = k + 1
Set wksNeu = wkbNeu.Sheets(k)
wksNeu.Name = ThisWorkbook.Sheets(.List(i)).Name
ThisWorkbook.Sheets(.List(i)).UsedRange.Copy
With wksNeu.Cells(1)
.PasteSpecial xlPasteValues        ' überträgt Werte
.PasteSpecial xlPasteFormulas      ' überträgt Zellen mit Formeln
.PasteSpecial xlPasteFormats       ' überträgt Formate
.PasteSpecial xlPasteColumnWidths  ' überträgt Spaltenbreite
End With
Application.Goto Reference:=Cells(1)
Application.CutCopyMode = False
End If
Next i
End With
'Neue Mappe Speichern
wkbNeu.SaveAs Filename:=strDateiName
'ThisWorkbook.Close savechanges:=False
Unload Me
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Tabelle in neue Tabelle kopieren...
11.10.2012 12:21:42
Rudi
Hallo,
teste mal:
Private Sub Tabellen_kopieren()
Dim wkbNeu As Workbook
Dim strDateiName As String
Dim i As Integer, k As Integer
Dim Objekt As Shape
'Speichername und SpeicherstrPfad abfragen
strDateiName = ThisWorkbook.Path & "\Kopie von " & ThisWorkbook.Name
strDateiName = Application.GetSaveAsFilename( _
InitialFileName:=strDateiName, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
If strDateiName = "Falsch" Then Exit Sub
' Ausgewählte Tabellenblätter in die Neue Mappe kopieren
Application.ScreenUpdating = False
Set wkbNeu = Workbooks.Add(1)
With Me.Blätter
For i = 0 To .ListCount - 1
If .Selected(i) Then
ThisWorkbook.Sheets(.List(i)).Copy _
after:=wkbNeu.Sheets(wkbNeu.Sheets.Count)
Application.Goto Reference:=Cells(1)
Application.CutCopyMode = False
End If
Next i
End With
Application.DisplayAlerts = False
wkbNeu.Sheets(1).Delete
Application.DisplayAlerts = True
'Neue Mappe Speichern
wkbNeu.SaveAs Filename:=strDateiName
'ThisWorkbook.Close savechanges:=False
Unload Me
Application.ScreenUpdating = True
End Sub

Gruß
Rudi

Anzeige
AW: Tabelle in neue Tabelle kopieren...
11.10.2012 12:27:24
Waldtraut
Hallo Rudi,
vielen Dank für Deine Antwort.
Das klappt soweit sehr gut - die Tabelle wird kopiert, verliert aber leider die Formate der Spalten (Breite).
Hast Du dafür vielleicht noch eine Lösung?
LG Waldtraut

AW Nachtrag: Tabelle in neue Tabelle kopieren...
11.10.2012 12:31:01
Waldtraut
Hallo Rudi,
Spaltenbreiten stimmen nicht mehr und die Grafik (Logo) wird leider auch nicht mitkopiert...
Hast Du dafür vielleicht noch eine Lösung?

glaub ich nicht
11.10.2012 12:35:55
Rudi
Hallo,
kann nicht sein, da die Sheets komplett kopiert werden.
Gruß
Rudi

AW: glaub ich nicht
11.10.2012 13:00:56
Waldtraut
Hallo Rudi,
leider ist das aber so.
Ich versuche die ganze Zeit eine Mappe hochzuladen, das klappt aber nicht, weil auf 300 KB begrenzt und meine Mappe aus unerfindlichen Gründen 1,06 MB groß ist.

Anzeige
Sorry Rudi, mein Fehler - Klappt natülich bestens!
11.10.2012 13:18:28
Waldtraut
Hallo Rudi,
entrschuldige, ich habe den Fehler entdeckt!
Der Verweis Verwiesemeinen kleinen Fehler entdeckt...
Folgender Code verweist auf "

Private Sub Speichern_Click" statt auf "

Private Sub Tabellen_kopieren".
Kurz angepasst und jetzt läuft das Makro natürlich bestes! Vielen Dank!

Private Sub Blätter_Change()
Dim i As Integer
j = 0
With Me.Blätter
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
j = j + 1
End If
Next i
End With
If j > 0 Then
Me.Speichern.Enabled = True
Else
Me.Speichern.Enabled = False
End If
End Sub

Anzeige
Button sollen nicht kopiert werden - geht das?
11.10.2012 13:30:00
Waldtraut
Hallo Rudi,
kann unterbunden werden, das die Button mitkopiert werden?.
Noch einmal danke für Deine Hilfe!

AW: Button sollen nicht kopiert werden - geht das?
11.10.2012 13:37:12
Rudi
Hallo,
und dann auch noch am besten der Code in den Blättern nicht?
Dafür gibt's deinen ursprünglichen Code.
Was für Buttons? Aus Formular oder ActiveX?
Gruß
Rudi

AW: Button sollen nicht kopiert werden - geht das?
11.10.2012 13:42:36
Waldtraut
Es befinden sich z.B. der Button zum Aufruf der Sicherung (Code s. unten) direkt im Tabellenblatt.
Sub Sichern()
UserForm1.Show
End Sub

Buttons in Kopie löschen
11.10.2012 14:10:14
Rudi
Hallo,
Private Sub Tabellen_kopieren()
Dim wkbNeu As Workbook
Dim strDateiName As String
Dim i As Integer, k As Integer
Dim Objekt As Shape
'Speichername und SpeicherstrPfad abfragen
strDateiName = ThisWorkbook.Path & "\Kopie von " & ThisWorkbook.Name
strDateiName = Application.GetSaveAsFilename( _
InitialFileName:=strDateiName, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
If strDateiName = "Falsch" Then Exit Sub
' Ausgewählte Tabellenblätter in die Neue Mappe kopieren
Application.ScreenUpdating = False
Set wkbNeu = Workbooks.Add(1)
With Me.Blätter
For i = 0 To .ListCount - 1
If .Selected(i) Then
ThisWorkbook.Sheets(.List(i)).Copy _
after:=wkbNeu.Sheets(wkbNeu.Sheets.Count)
DeleteButtons ActiveSheet 'Buttons löschen
Application.Goto Reference:=Cells(1)
Application.CutCopyMode = False
End If
Next i
End With
Application.DisplayAlerts = False
wkbNeu.Sheets(1).Delete
Application.DisplayAlerts = True
'Neue Mappe Speichern
wkbNeu.SaveAs Filename:=strDateiName
Unload Me
Application.ScreenUpdating = True
End Sub
Sub DeleteButtons(wks As Worksheet)
Dim objSHP As Shape
For Each objSHP In wks.Shapes
With objSHP
Select Case .Type
Case msoFormControl
If .FormControlType = xlButtonControl Then .Delete
Case msoOLEControlObject
If .OLEFormat.progID = "Forms.CommandButton.1" Then .Delete
End Select
End With
Next
End Sub
Gruß
Rudi

Anzeige
AW: Buttons in Kopie löschen
11.10.2012 14:18:48
Waldtraut
Hallo Rudi,
es handelt sich bei dem Button um eine Autoform (?).
Jedenfalls kann ich den Button per "AutoForm formatieren..." andere Schriftart, Füllfarbe etc. zuweisen.
Das Makro "DeleteButtons(wks As Worksheet)" läßt die Autoform unangetastet...
Entschuldigung, ich nerve sicher langsam... Aber gibt es auch dafür eine Lösung?

AW: Button sollen nicht kopiert werden - geht das?
11.10.2012 14:06:50
Waldtraut
Hallo Rudi,
es handelt sich bei dem Button um eine Autoform (?).
Jedenfalls kann ich den Button per "AutoForm formatieren..." andere Schriftart, Füllfarbe etc. zuweisen.

AW: Button sollen nicht kopiert werden - geht das?
11.10.2012 14:17:14
Rudi
Hallo,
weißt du nicht, wie der eingefügt wurde?
Jedenfalls kann ich den Button per "AutoForm formatieren..." andere Schriftart, Füllfarbe etc. zuweisen.
Das sieht eher nach Zeichnungselement aus.
Alle Zeichnungselemente löschen:
Sub DeleteShapes(wks As Worksheet)
Dim objSHP As Shape
For Each objSHP In wks.Shapes
objSHP.Delete
Next
End Sub

Gruß
Rudi

Anzeige
AW: Button sollen nicht kopiert werden - geht das?
11.10.2012 14:31:26
Waldtraut
Hallo Rudi,
jetzt bricht der Code "objSHP.Delete" mit Fehlermeldung "Laufzeitfehler 70" ab.

Blattschutz? owT
11.10.2012 15:07:50
Rudi

AW: Blattschutz? owT
11.10.2012 15:21:06
Waldtraut
Hallo Rudi,
nein , es ist kein Blattschutz gesetzt.

dann weiß ich nicht weiter. owT
11.10.2012 16:13:34
Rudi

AW: Ganz herzlichen Dank für Deine Mühe! oT
11.10.2012 18:22:24
Waldtraut
LG Waldtraut

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige