Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
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
Inhaltsverzeichnis

Tabellenblätter in Schleife in neue Arbeitsmappe verschieben und speichern

Tabellenblätter in Schleife in neue Arbeitsmappe verschieben und speichern
06.12.2019 10:47:47
Dominic
Halllo zusammen,
mit dem nachfolgenden Code lasse ich mit einer Schleife kundenspezifische Daten in ein vorbereitetes Formular einlesen (das Einlesen geht im Formular über SVerweis), je Kunde ein neues Tabellenblatt mit seinen spezifischen Inhalten anlegen und mit dem Namen des Kundenprojekts benennen.
Mein Ziel ist, jedem Kunden jeweils nur sein Formular (als Excel-Datei) zukommen zu lassen. Also suche ich eine Funktion in der Schleife, um
- jedes neu erzeugte Tabellenblatt in eine neue, eigene Arbeitsmappe mit nur diesem Blatt als Inhalt zu verschieben
- das Tabellenblatt mit (für alle gleichem) Passwort zu schützen und zu sperren
- diese Arbeitsmappe jeweils mit dem Namen des Tabellenblatts abzuspeichern,
bis zum Ende der Schleife.
So sollen am Ende ca. 50 Arbeitsmappen erzeugt werden (im Code unten testweise nur 5).
Kann mir dabei jemand helfen?
Nun der bisherige Code, den ich mangels VBA-Vorkenntnissen aus diversen Quellen und Makro- _
Aufzeichnungen zusammengebastelt habe (soweit funktioniert er schon! :)).

Sub AutoCopyBlaetter()
' Befüllt Zelle AG6 mit Zahl aus Schleife
' Kopiert dann Tabellenblatt
' benennt dann Tabellenblatt nach Inhalt U28
' Tastenkombination: Strg+t
Dim dValue As Integer
Dim wsAlle As Worksheet
Dim wsNeu As Worksheet
Dim strName As String
Dim Pleft As Double, Ptop As Double
For dValue = 1 To 5
Sheets("Tabelle1").Range("AG6").Value = dValue
strName = Worksheets("Tabelle1").Range("u28").Value
Sheets("Tabelle1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = strName
Sheets("Tabelle1").Shapes("Picture 1").Copy
Ptop = Sheets("Tabelle1").Shapes("Picture 1").Top
Pleft = Sheets("Tabelle1").Shapes("Picture 1").Left
Sheets(strName).Paste
Sheets(strName).Shapes("Picture 1").Left = Pleft
Sheets(strName).Shapes("Picture 1").Top = Ptop
Sheets(strName).Range("A19:AD38").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("AG:AG").Select
Range("AG16").Activate
Selection.EntireColumn.Hidden = True
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingRows:=True
Next dValue
End Sub

Vielen Dank für Eure Tipps!
Grüße
Dominic

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter in Schleife in neue Arbeitsmappe verschieben und speichern
06.12.2019 14:05:50
fcs
Hallo Dominic,
nachfolgend dein Makro angepasst/ergänzt.
Nicht vollziehen kann ich,warum du das "Picture 1" kopierst und auf dem Blatt einfügst. Eigentlich müsste es doch mit dem Blatt "tabelle 1" mit kopiert werden.
LG
Franz

Sub AutoCopyBlaetter()
' Befüllt Zelle AG6 mit Zahl aus Schleife
' Kopiert dann Tabellenblatt
' benennt dann Tabellenblatt nach Inhalt U28
' Tastenkombination: Strg+t
Dim dValue As Integer
Dim wsAlle As Worksheet
Dim wsNeu As Worksheet
Dim wbNeu As Workbook, PfadNeu As String
Dim strName As String
Dim Pleft As Double, Ptop As Double
PfadNeu = ActiveWorkbook.Path 'Verzeichnis in dem Dateien gespeichert werden sollen
For dValue = 1 To 5
Sheets("Tabelle1").Range("AG6").Value = dValue
Worksheets("Tabelle1").Calculate
strName = Worksheets("Tabelle1").Range("u28").Value
Sheets("Tabelle1").Copy After:=Sheets(Sheets.Count)
Set wsNeu = ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
wsNeu.Name = strName
Sheets("Tabelle1").Shapes("Picture 1").Copy
Ptop = Sheets("Tabelle1").Shapes("Picture 1").Top
Pleft = Sheets("Tabelle1").Shapes("Picture 1").Left
wsNeu.Paste
wsNeu.Shapes("Picture 1").Left = Pleft
wsNeu.Shapes("Picture 1").Top = Ptop
With wsNeu.Range("A19:AD38")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
wsNeu.Columns("AG:AG").EntireColumn.Hidden = True
Range("A1").Select
Application.CutCopyMode = False
wsNeu.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowFormattingRows:=True
'neues Blatt in neue Mappe kopieren
wsNeu.Copy
Set wbNeu = ActiveWorkbook
With wbNeu.Worksheets(1)
.Unprotect
.Protect Password:="MeinPasswort"
End With
Application.DisplayAlerts = False 'Falls Datei schon vorhanden wird diese ohne _
Rückfrage überschrieben
wbNeu.SaveAs Filename:=PfadNeu & "\" & strName, FileFormat:=51 '51 = xlsx-Datei
Application.DisplayAlerts = True
wbNeu.Close savechanges:=False
Next dValue
End Sub

Anzeige
AW: Tabellenblätter in Schleife in neue Arbeitsmappe verschieben und speichern
06.12.2019 14:42:52
Dominic
Hallo Franz,
tausend Dank für Deine Ergänzung! ich werde sie kommende WOche ausprobieren und mich wieder melden.
Zum Bild: mir ist auch nicht klar, warum es beim Kopieren des Blatts nicht mitkommt, ist aber so, die kopierten Blätter sind alle leer - keine Ahnung warum. Daher habe ich das extra umgesetzt.
LG
Dominic
AW: Tabellenblätter in Schleife in neue Arbeitsmappe verschieben und speichern
06.12.2019 15:59:23
fcs
Hallo Dominic,
Ursache für das Bild-Nicht-Kopieren gefunden.
Du hast unter den Excel Optionen (warum auch immer) eine Option deaktiviert.
Userbild
LG
Franz
Anzeige
AW: Tabellenblätter in Schleife in neue Arbeitsmappe verschieben und speichern
10.12.2019 09:20:20
Dominic
Hallo Franz,
Dein Makro funktioniert prächtig, herzlichen Dank! Dank Deines Hinweises mit den Optionen klappt jetzt auch das Kopieren und Einfügen der Grafik - auch in die Blätter der neuen Arbeitsmappen, was zunächst noch nicht der Fall war. Ich hab den Teil des Codes, mit dem die Grafik kopiert wird, entfernt und alles klappt super.
LG Dominic

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige