Automatisches Umbenennen von Blattnamen

Hallo,

ich habe in meiner Excel-Datei 12 Blätter mit den Namen Jan 2007, Feb 2007 usw. Diese möchten ich nun umbenennen in Jan 2008 usw. Geht das automatisch? Die Ersetzen-funktion läuft hier ja leider nicht. Geht das (nur) über ein Makro? Da ich eine Vielzahl ähnlich gestrickter Dateien besitze, die aber immer etwas andere Blattnamen haben (z.B. Plan Jan 2007, Plan 01 07), wäre es schön, wenn es einfach gehen würde…

Oliver

Hi Oliver,
ich wüßte nur ein Lösung über Makro:

Option Explicit
Sub JahresWechsel()
Const year = 8
Dim strCurrYear as String
Dim i as Integer
Dim strYear as String

For i = 1 to 12
 strCurrYear = Worksheets(i).Name 
 strYear = right("00" & str(year);2) 
 strCurrYear = left(strCurrYear ,len(strCurrYear )-2) & strYear
 Worksheets(i).Name = strCurrYear 
Next I 
End Sub

So wichtig
-das Markro funktioniert nur die nächsten 91 Jahre

  • Du musst in der ersten Zeile (Const year = 8) immer das aktuelle Jahr eingeben, die letzten beiden Ziffern.
  • Voraussetzung ist, dass die worksheets wirklich immer irgend wie
    jan07,…dez07 oder irgendwie so heißen. Sprich Pro Monat ein Sheet und die letzten 2 Stellen geben das jahr an. So wie in deinem Beispielen. Wo bei es egal ist PlanJan07 oder Planjanuar2007.

Dann funkt es. (oder sollte-habe es wenn ich ehrlich bin nicht getestet)
Für Rückfragen stehe ich natürlich gerne zur Verfügung. (oder die anderen)
Grüße
Winter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ich habe in meiner Excel-Datei 12 Blätter mit den Namen Jan
2007, Feb 2007 usw. Diese möchten ich nun umbenennen in Jan
2008 usw. Geht das automatisch? Die Ersetzen-funktion läuft
hier ja leider nicht. Geht das (nur) über ein Makro? Da ich
eine Vielzahl ähnlich gestrickter Dateien besitze, die aber
immer etwas andere Blattnamen haben (z.B. Plan Jan 2007, Plan
01 07), wäre es schön, wenn es einfach gehen würde…

Hi Oliver,
ungetestet:

Sub Umbenennen()
dim ws as worksheet, Jahr as integer
Jahr=2007
for each ws in thisworkbook.worksheets
 if instr(ws.name,Jahr) then
 ws.name=application.worksheetfunction.Substitute(ws.name,cstr(Jahr),cstr(jahr+1))
 end if
next ws
End Sub

Gruss
Reinhard

> Sub Umbenennen()  
> dim ws as worksheet, Jahr as integer  
> Jahr=2007  
> for each ws in thisworkbook.worksheets  
> if instr(ws.name,Jahr) then  
>   
> ws.name=application.worksheetfunction.Substitute(ws.name,cstr(Jahr),cstr(jahr+1))  
> end if  
> next ws  
> End Sub

Ätsch schneller ;-p
ist aber die bessere Lösung (klar Reinhard IST besser als ich -Ohne Neid)
Nur diese Lösung funktioniert nicht bei „Plan 01 07“
Grüße Winter.

Hallo Winter,

Ätsch schneller ;-p

jaa, naja, ich hatte es erst 13:44 gelesen *kicher*

Kwark, um Schnelligkeit geht es nicht.

ist aber die bessere Lösung (klar Reinhard IST besser als ich
-Ohne Neid)
Nur diese Lösung funktioniert nicht bei „Plan 01 07“

jepp, wo keine 2007 drinsteckt kann man keine ersetzen, naja, das mit nur „07“ habe ich wohl überlesen, bin da oftmals sehr flüchtig beim Lesen.

Gruß
Reinhard

OT:Schneller war:Automatisch Umbenennen Blattnamen
Hi Reinhard,

Kwark, um Schnelligkeit geht es nicht.

Nein wirklich nicht.
deswegen :

ist aber die bessere Lösung (klar Reinhard IST besser als ich
-Ohne Neid)

jepp, wo keine 2007 drinsteckt kann man keine ersetzen, naja,
das mit nur „07“ habe ich wohl überlesen, bin da oftmals sehr

muss er halt 2007 durch 07 in Code ersetzten UND den doppleten August zum Juli machen :wink:
geht alles
Ich sehe das hier als Hilfe zur Selbsthilfe. Ihr Experten habt mich auf den level gehoben, dass ich richtige Antworten geben kann. (sind zwar noch nicht so elgenat wie deine Lösung, aber funktionieren)
Grüße Winter