Makro um aus einer xlt.Datei mit 3 Worksheets Daten aus dem 3en ins 2e kopieren.
Hi,
Ich habe ein Problem mit meinem Excel Makro...
In einer xlt-Datei werden Daten (Projekte) in den letzten Worksheet geschrieben.
Diese Projekte haben vorne eine fortlaufende Nummer.
Nun will ich alle Projekte die bspw. eine 1 vorne in ein Arbeitsblatt kopieren (bzw. für dieses Projekt einen neuen Worksheet erstellen) und dieses Arbeitsblatt dann nach dem Projektnamen benennen.
Das ganze soll nun auch für die weiteren Projekte funktionieren sodass die Schleife durchläuft und für jedes Projekt einen weiteren Worksheet erstellt und diese jeweils benennt.
Kann mir da jemand weiterhelfen?
Am Ende, wo er aus der Schleife rausspringt hat er nurnoch ein ** als fortlaufende Nummer vorne.
Diese Funktion habe ich bereits eingebaut, dass er mir da rausspringt.
Ich habe ein Problem mit meinem Excel Makro...
In einer xlt-Datei werden Daten (Projekte) in den letzten Worksheet geschrieben.
Diese Projekte haben vorne eine fortlaufende Nummer.
Nun will ich alle Projekte die bspw. eine 1 vorne in ein Arbeitsblatt kopieren (bzw. für dieses Projekt einen neuen Worksheet erstellen) und dieses Arbeitsblatt dann nach dem Projektnamen benennen.
Das ganze soll nun auch für die weiteren Projekte funktionieren sodass die Schleife durchläuft und für jedes Projekt einen weiteren Worksheet erstellt und diese jeweils benennt.
Kann mir da jemand weiterhelfen?
Am Ende, wo er aus der Schleife rausspringt hat er nurnoch ein ** als fortlaufende Nummer vorne.
Diese Funktion habe ich bereits eingebaut, dass er mir da rausspringt.
Please also mark the comments that contributed to the solution of the article
Content-Key: 184103
Url: https://administrator.de/contentid/184103
Printed on: April 19, 2024 at 16:04 o'clock
5 Comments
Latest comment
Moin David0815,
da eine xlt-Datei eine Vorlage darstellt, wird bei deren Öffnen eine Excel-Mappe erzeugt, die Einstellungen der Vorlage erbt. Soll also das Kopieren der Projektdaten aus der Vorlage in die resultierende Mappe erfolgen oder soll sich die Vorlage (bei welchem Ereignis?) selbst modifizieren? Oder möchtest Du das oben geschriebene an einer normalen Excel-Mappe vornehmen und diese dann als Vorlage speichern?
Freundliche Grüße von der Insel - Mario
da eine xlt-Datei eine Vorlage darstellt, wird bei deren Öffnen eine Excel-Mappe erzeugt, die Einstellungen der Vorlage erbt. Soll also das Kopieren der Projektdaten aus der Vorlage in die resultierende Mappe erfolgen oder soll sich die Vorlage (bei welchem Ereignis?) selbst modifizieren? Oder möchtest Du das oben geschriebene an einer normalen Excel-Mappe vornehmen und diese dann als Vorlage speichern?
Freundliche Grüße von der Insel - Mario
Moin David,
Du meinst Zeilen?!
Soweit ja. Ich habe nur noch nicht begriffen, was das Ganze in einer Vorlage - aber egal.
Da ich nicht weiß, wie Dein Ansatz ist, was man mit den Basisdaten machen darf (sortieren, gruppieren etc.) und man diese Sache vom Ansatz her grundverschieden lösen kann, skizziere ich eine (getestete) Möglichkeit. Den Quelltext bitte in ein Modul kopieren.
Der Code geht davon aus, dass auf dem ersten Tabellenblatt die Projektdaten gespeichert sind, speziell in Spalte A die Projektbezeichner. Dieses Blatt wird zunächst sortiert nach Spalte A (Zeile 7). Danach werden alle weiteren, eventuell vorhandenen) Tabellenblätter der Mappe gelöscht (Zeile 11) - unter der Annahme, das stets das Masterblatt aktuelle(re) Daten enthält. Die Projektbezeichner in Spalte A werden durchlaufen, existiert noch kein separates Projektblatt (Zeile 14), wird es angelegt (als Kopie des Masterblattes), benannt und alle Zeilen mit nicht zum Blattnamen passenden Projektbezeichner werden gelöscht (Zeilen 20-23). Das hat den Vorteil, dass automatisch alle Projektblätter alle (auch neuere) Projekte (Zeilen) aus dem Masterblatt (Sheet(1)) haben. Sollte das Masterblatt keine Überschrift tragen, so muss in der Zeile 8 die Referenz (2x) sowie in den Zeilen 13 und 19 der Startwert angepasst werden.
Wenn prinzipiell diese Vorgehensweise (Sortieren, Löschen etc.) auf Deine Daten passt, kann man das Ganze im Detail eleganter gestalten.
Freundliche Grüße von der Insel - Mario
Zitat von @David0815:
... Jetzt möchte ich diese Spalten auch in das richtige Arbeitsblatt (was bereits erstellt wurde) kopieren.
... Jetzt möchte ich diese Spalten auch in das richtige Arbeitsblatt (was bereits erstellt wurde) kopieren.
Du meinst Zeilen?!
Konnte ich das irgendwie verständlich rüberbringen?
Soweit ja. Ich habe nur noch nicht begriffen, was das Ganze in einer Vorlage - aber egal.
Da ich nicht weiß, wie Dein Ansatz ist, was man mit den Basisdaten machen darf (sortieren, gruppieren etc.) und man diese Sache vom Ansatz her grundverschieden lösen kann, skizziere ich eine (getestete) Möglichkeit. Den Quelltext bitte in ein Modul kopieren.
Sub ProjektManagement()
Dim i As Long, j As Long
With Application
.DisplayAlerts = False
.ScreenUpdating = False
With .ThisWorkbook
.Sheets(1).Range("A1:IV" & .Sheets(1).Range("A" & Rows.Count).End(xlUp).Row).Sort _
Key1:=.Sheets(1).Range("A2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
For i = .Sheets.Count To 2 Step -1
.Sheets(i).Delete
Next i
For i = 2 To .Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
If .Sheets(Sheets.Count).Name <> .Sheets(1).Cells(i, 1).Text Then
.Sheets(1).Copy After:=.Sheets(.Sheets.Count)
.Sheets(.Sheets.Count).Name = .Sheets(1).Cells(i, 1).Text
End If
With .Sheets(.Sheets.Count)
For j = 2 To .Range("A" & Rows.Count).End(xlUp).Row
If .Cells(j, 1) <> "" And .Cells(j, 1) <> .Name Then
.Rows(j).Delete
j = j - 1
End If
Next j
End With
Next i
End With
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
Der Code geht davon aus, dass auf dem ersten Tabellenblatt die Projektdaten gespeichert sind, speziell in Spalte A die Projektbezeichner. Dieses Blatt wird zunächst sortiert nach Spalte A (Zeile 7). Danach werden alle weiteren, eventuell vorhandenen) Tabellenblätter der Mappe gelöscht (Zeile 11) - unter der Annahme, das stets das Masterblatt aktuelle(re) Daten enthält. Die Projektbezeichner in Spalte A werden durchlaufen, existiert noch kein separates Projektblatt (Zeile 14), wird es angelegt (als Kopie des Masterblattes), benannt und alle Zeilen mit nicht zum Blattnamen passenden Projektbezeichner werden gelöscht (Zeilen 20-23). Das hat den Vorteil, dass automatisch alle Projektblätter alle (auch neuere) Projekte (Zeilen) aus dem Masterblatt (Sheet(1)) haben. Sollte das Masterblatt keine Überschrift tragen, so muss in der Zeile 8 die Referenz (2x) sowie in den Zeilen 13 und 19 der Startwert angepasst werden.
Wenn prinzipiell diese Vorgehensweise (Sortieren, Löschen etc.) auf Deine Daten passt, kann man das Ganze im Detail eleganter gestalten.
Freundliche Grüße von der Insel - Mario
Hallo @all!
Eine kleine Anmerkung zum kopieren von Daten. Bei Nutzung der AutoFilter-Funktion, werden mit dem Copy-Befehl nur die sichtbaren Zeilen kopiert.
Gruß Dieter
Eine kleine Anmerkung zum kopieren von Daten. Bei Nutzung der AutoFilter-Funktion, werden mit dem Copy-Befehl nur die sichtbaren Zeilen kopiert.
Gruß Dieter