florian86
Goto Top

Excel VBA Tabelleblätter kopieren und Umbenennnen

Hallo,

ich habe ein fertiges Tabellenblatt welches ich jetzt für jeden Tag im Jahr kopieren müsste.

Nun dachte ich das man mit VBA vielleicht die Blätter mit einmal anlegen könnte.

Das heist also das von mir angelegte Tabellenblatt soll immer wieder kopiert werden

und dann zum Beispiel gleich den richtigen Namen erhalten.

Zum Beispiel: Mo für Montag + Datum 02.01.17 ALSO.... Mo 02.01.17

Ist sowas möglich? Normales kopieren bekomm ich mit VBA hin aber das eben nicht.

MfG

Florian86

Content-ID: 329289

Url: https://administrator.de/forum/excel-vba-tabelleblaetter-kopieren-und-umbenennnen-329289.html

Ausgedruckt am: 23.04.2025 um 13:04 Uhr

emeriks
emeriks 13.02.2017 um 15:26:03 Uhr
Goto Top
Hi,
schon mal mit "Makro aufzeichnen" versucht?

E.
Kraemer
Kraemer 13.02.2017 aktualisiert um 15:28:58 Uhr
Goto Top
Moin,


Zitat von @Florian86:
Normales kopieren bekomm ich mit VBA hin aber das eben nicht.

dann brauchst du nur noch eine Schleife und ein paar Datumsbefehle

for oder aber auch while
date
dateadd
weekday

Gruß Krämer
Florian86
Florian86 13.02.2017 um 15:30:16 Uhr
Goto Top
ja das ist richtig wie mache ich das aber fortlaufen für 365 Tage?

MfG

Florian
emeriks
Lösung emeriks 13.02.2017 um 15:38:51 Uhr
Goto Top
Also einmal eine lumpige Aufzeichnung gefahren und dann kommt das dabei raus:
Sub Makro1()
    Sheets("Tabelle2").Select  
    Sheets("Tabelle2").Copy After:=Sheets(3)  
End Sub
Suchst Du sowas? Oder willst Du Inhalte eines Tabellenblatts kopieren?
Pjordorf
Lösung Pjordorf 13.02.2017 um 15:39:29 Uhr
Goto Top
Hallo,

Zitat von @Florian86:
ja das ist richtig wie mache ich das aber fortlaufen für 365 Tage?
Hat man dir schon gesagt. Mit einer Schleife (nein, die Rosafarbene).
DIM Tag as Integer
Tag = 1
For Tag = 1 to 365
   REM Hier tut sich nichts
   Tag = Tag +1
Next

Und sicher das du als Name wirklich "Mo 02.01.2017" nehmen willst. Das gibt, falls du mal die Blätter sortieren willst ein kleines Chaos - und nix nach Datum...

Gruß,
Peter
Florian86
Florian86 13.02.2017 um 15:41:52 Uhr
Goto Top
ah ok danke für den tipp das stimmt natürlich..

Danke
Kraemer
Kraemer 13.02.2017 aktualisiert um 16:04:49 Uhr
Goto Top
Start = "01.01.2017"  
For i = 0 To 365
    a = DateAdd("d", i, Start)  
    Sheets("Tabelle1").Copy After:=Sheets(Sheets.Count)  
    ActiveSheet.Name = Format(a, "yyyy-mm-dd") & " " & UCase(Format(Weekday(a), "ddd"))  
Next
132272
132272 13.02.2017 aktualisiert um 16:20:46 Uhr
Goto Top
Wer auch immer sich solch ein Schema ausgedacht hat X-)
Sub CreateSheets()
    Const VORLAGE = "Tabelle1"  
    Const STARTDATE = "01.01.2017"  
    
    ENDDATE = DateAdd("yyyy", 1, STARTDATE)  
    d = CDate(STARTDATE)
   Application.Screenupdating = False
    While d < ENDDATE
        Sheets(VORLAGE).Copy After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = WeekdayName(Weekday(d, vbMonday), True, vbMonday) & " " & d  
        d = d + 1
    Wend
    Application.Screenupdating = True
End Sub

For i = 0 To 365
Nicht jedes Jahr hat 365 bzw bei dir 366 Tage(Schaltjar) :-P