Clever-Excel-Forum

Normale Version: VBA Projekt - Tabellenblatt für jeden wertag in einem bestimmten Jahr kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich bin absoluter VBA neuling und versuche mich gerade an einem Projekt.
Ich habe ein Tabellenblatt, das soll für jeden Werktag (also Samstag und Sonntag sollen ausgeschlossen werden) kopiert werden und an des ende angehangen werden. Allerding soll es nur immer für ein bestimmtes Jahr gemacht werden, also 2020 oder 202x.
Gleichzeitig soll das Blatt mit dem jeweiligem Datum benannt werden und das Datum soll zusätzlich in eine Zelle E2 geschrieben werden.
Dann möchte ich das VBA Projekt so speichern, dass ich dieses auch in anderen Arbeitsmappen verwenden kann.
Dann bräuchte ich noch hilfe (vielleicht mit einem Screenshot) wo genau das ganze im Projekt Explorer eingehangen wird.
Ich weiß, für einen noob vielleicht ein bischen viel am Anfang, aber ich wäre euch sehr dankbar für eure Hilfe.

LG
Hi,
also ohne Beipiel bzw. was willst Du erreichen oder oder oder
kann Dir wahrscheinlich keiner helfen.
Hallo,

ich hänge meine Tabelle mal mit dran. Das Blatt 07.01.2020 soll kopiert werden hinter dem ersten. Dann soll das kopierte Blatt umbenannt werden in 08.01.2020. Ebenso soll in die Zelle E2 das Datum 08.01.2020 geschrieben werden.
Es sollen für jeden Werktag, also ohne Samstage und Sonntage neue Blätter erstellt werden bis zum letzten Tag des Jahres 2020.
Dann will ich mir das Makro bzw. Projekt so abspeichern das ich die auch in anderen Mappen wieder benutzen kann.
Hallo,

Frage 1: was ist ein Bulk?
Frage 2: du willst tatsächlich über 300 Datenblätter für ein Jahr anlegen?
Moin

Mal so nebenbei:
112 Objekte pro Blatt
365 Blätter
40880 Objekte gesamt

Bin gespannt wie dann die Performance ist.
Bulk sind Rohwaren, einfach ausgedrückt, Container mit irgendwelchen Stoffen.

Ja, ich will ca. 250 Blätter, das entspricht etwa allen Werktagen. Also besser gesagt, ich wollte das nicht, aber wenn man immer "hier" schreit auf der Arbeit dann landet sowas bei einem. Sinn der 250 Blätter ist eine Rückverfolgbarkeit. Diese ist Bestandteil der mir gestellten Aufgabe. Es gibt jemand der meint es könnte eben mal wichtig sein oder von Vorteil wenn man mal im November nachschauen kann was im Februar.

shift-del, danke für den guten Hinweis! Wenn die Performance leidet kommt Klaus-Dieter seine Lösung mit Datenüberprüfung doch wieder ins Spiel.

Mir geht jetzt tatsächlich erstmal nur darum wie ich generell so ein Makro aufbaue. Bin zwar auch schon etwas älter möchte aber trotzdem noch lernen.

LG
Moin!
Vorweg:
Dein Wunsch ist eine absolute Schnapsidee!
Die Datei wird ohne Inhalte schlappe fast 14 MB groß.
Man kann zwar darin arbeiten, aber das Speichern und öffnen dauert eine halbe Ewigkeit!
Die Datei ist somit schlicht unbrauchbar!

Damit Du Dich selbst davon überzeugen kannst, zeige ich Dir mal mein Konstruktionsmakro:

Sub Monsterdatei()

Dim Datum As Date
Datum = DateSerial(2020, 01, 08)
Application.ScreenUpdating = False
  Do While Year(Datum) = 2020
    Worksheets("07.01.2020").Copy After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = Format(Datum, "dd.mm.yyyy")
    Datum = WorksheetFunction.WorkDay(Datum, 1)  
  Loop
End Sub

Gruß Ralf
Danke, Ralf.
Das bestätigt meine Vermutung.
Hi,
also wenn Du mich fragst, viel Interesse an Deinen Problem hast Du aber nicht.
Ich habe Dir auch dazu eine PN geschrieben.
Hallo zusammen,

vielen Dank für die hilfreichen Empfehlungen!
Ich war die letzten Tage leider beruflich unterwegs und kann mich jetzt erst wieder meinem Projekt zuwenden.
Aufgrund der Dateigröße würde ich dann doch pro Monat eine Mappe anlegen, das macht es vielleicht auch in der Ablage übersichtlicher.

Sub Monsterdatei()

Dim Datum As Date
Datum = DateSerial(2020, 01, 08)
Application.ScreenUpdating = False
  Do While Month(Datum) = Januar
    Worksheets("07.01.2020").Copy After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = Format(Datum, "dd.mm.yyyy")
    Datum = WorksheetFunction.WorkDay(Datum, 1)  
  Loop
End Sub

Ich habe den Code "Do While Month(Datum) = Januar" so angepasst für Monatsweise kopieren. Das ist doch sicher zu einfach gedacht oder? Woher weiß excel jetzt das es um den Monat Januar im Jahr 2020 geht oder ob es der Monat Januar im Jahr 2021 ist?

LG
Seiten: 1 2