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-Key: 329289

Url: https://administrator.de/contentid/329289

Printed on: May 4, 2024 at 15:05 o'clock

Member: emeriks
emeriks Feb 13, 2017 at 14:26:03 (UTC)
Goto Top
Hi,
schon mal mit "Makro aufzeichnen" versucht?

E.
Member: Kraemer
Kraemer Feb 13, 2017 updated at 14:28:58 (UTC)
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
Member: Florian86
Florian86 Feb 13, 2017 at 14:30:16 (UTC)
Goto Top
ja das ist richtig wie mache ich das aber fortlaufen für 365 Tage?

MfG

Florian
Member: emeriks
Solution emeriks Feb 13, 2017 at 14:38:51 (UTC)
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?
Member: Pjordorf
Solution Pjordorf Feb 13, 2017 at 14:39:29 (UTC)
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
Member: Florian86
Florian86 Feb 13, 2017 at 14:41:52 (UTC)
Goto Top
ah ok danke für den tipp das stimmt natürlich..

Danke
Member: Kraemer
Kraemer Feb 13, 2017 updated at 15:04:49 (UTC)
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
Mitglied: 132272
132272 Feb 13, 2017 updated at 15:20:46 (UTC)
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