Excel 2003 Arbeitsblattnamen generieren

Ich möchte in einer Excel-Tabelle z.B. für jeden Monat ein separates Arbeitsblatt erstellen. Das Arbeitsblatt soll den Namen des Monats tragen. Der Monatsname ist in einer Zelle (z.B. A1) des entsprechenden Arbeitsblattes als Überschrift zu finden. Wie kann ich ihn automatisch übernehmen, ohne jedes Blatt manuell benamen zu müssen?

Vielen Dank
Ulli

Ich möchte in einer Excel-Tabelle z.B. für jeden Monat ein
separates Arbeitsblatt erstellen. Das Arbeitsblatt soll den
Namen des Monats tragen. Der Monatsname ist in einer Zelle
(z.B. A1) des entsprechenden Arbeitsblattes als Überschrift zu
finden. Wie kann ich ihn automatisch übernehmen, ohne jedes
Blatt manuell benamen zu müssen?

Hallo Ulli,

wie kann in A1 eines Blattes daß du erstellen willst schon was drinstehen?

Grundsätzlich kannst du Blätter nur manuell oder per Vba erstellen/umbenennen.

Gruß
Reinhard

Hallo Ulli,

wie Reinhard sagt: Mit VBA geht es:
Mach mal:
Rechtsklick auf Blattreiter - Code anzeigen (VBA Editor geht auf).
Einfügen - Modul
Dann folgenden Code hier kopieren und ins Modul einfügen:

Sub blattname()
 Dim bn As String

 bn = Cells(1, 1)
 bn = Replace(bn, ":", "")
 bn = Replace(bn, "\", "")
 bn = Replace(bn, "/", "")
 bn = Replace(bn, "?", "")
 bn = Replace(bn, "\*", "")
 bn = Replace(bn, "[", "")
 bn = Replace(bn, "]", "")
 ActiveSheet.Name = bn
End Sub

VBA-Editor schließen.
Den gewünschten Blattnamen in Zelle A1 eintragen, wenn noch nicht geschehen.
Alt-F8 drücken.
Unter Optionen kannst du ein Tastenkürzel für das Makro eintragen.
Ausführen
Das Blatt erhält den neuen Blattnamen.
Beim nächsten Blatt reicht das Tastenkürzel.

Gruß, Andreas

Hallo Andreas, danke für die schnelle Antwort. Ich habe den Code exakt so in das Modulfeld kopiert. Dargestellt wird er so:

 (rot), Trennlinie, restlicher Code mit 

(rot) am Ende.
Leider tritt bei mir folgender Fehler auf:Fehler beim Kompilieren: Erwartet: Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende.
Was mache ich / ist da noch falsch?

Hallo Ulli,

du sprichst etwas in Rätseln. Kopier mal den Code aus dem Modul hier in ein Posting. Achte darauf, dass Zeilenumbrüche auch genau so sind wie bei dir. Dann schaue ich mir das noch mal an. Mein Code läuft bei mir einwandfrei.

Gruß, Andreas

Hallo Reinhard, ich habe mich da falsch ausgedrückt. Ich möchte Blätter erstellen/kopieren, die dann mit Daten befüllt werden.
Ich möchte aber die Namen der Arbeitsblätter automatisch generieren, um Fehler zu vermeiden: Es soll bei Nutzung von Vorlagen z.B. Januar2012 statt JanuarXXXX drinstehen.

Ich habe den
Code exakt so in das Modulfeld kopiert. Dargestellt wird er
so:

(rot), Trennlinie, restlicher Code mit

(rot) am Ende.
Leider tritt bei mir folgender Fehler auf:Fehler beim
Kompilieren: Erwartet: Zeilennummer oder Sprungmarke oder
Anweisung oder Anweisungsende.

Hallo Ulli,

irgendwas ging da beim Reinkopieren schief.

Lösche den Code im Modul und probier’s nochmal.
Markiere in w-w-w ab dem „S“ von Sub blattname bis zum „b“ von End Sub, Strg+c, im Modul dann strg+v

Meist treten so Kopierprobleme auf wenn lange Codezeilen umgebrochen werden aber das liegt ja hier nicht vor. Bei mir klappte das Reinkopieren problemlos.

Gruß
Reinhard

Hallo Ulli,

so vieleicht:

Sub Monate()
Dim M As Integer
On Error GoTo hell
For M = 1 To 12
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = MonthName(M) & "2012"
Next M
hell:
If Err.Number 0 Then MsgBox Err.Number & vbLf & Err.Description
End Sub

Gruß
Reinhard

Hallo Andreas, ich habe wohl den Fehler gemacht, den Code aus der Outlook-Mail zu kopieren, nicht aus dem Forum, daher tauchen

 und 

in rot auf, was wohl zu dem Fehler führt. Ich habe Reinhards Hinweis befolgt, bekomme aber den Error 400 zurück.

Sub blattname()
Dim bn As String

bn = Cells(1, 1)
bn = Replace(bn, ":", "")
bn = Replace(bn, "\", "")
bn = Replace(bn, "/", "")
bn = Replace(bn, "?", "")
bn = Replace(bn, "\*", "")
bn = Replace(bn, "[", "")
bn = Replace(bn, "]", "")
ActiveSheet.Name = bn
End Sub

Danke Reinhard, funktioniert einwandfrei,wenn man leere Blätter erstellen will. Mein Wunsch war aber, aus vorhanden Vorlagen den Arbeitsblattnamen zu generieren.
Ulli

Hallo Andreas, ich habe wohl den Fehler gemacht, den Code aus der Outlook-Mail zu kopieren, nicht aus dem Forum, daher tauchen

 und (der Slash ohne "")in rot auf, was wohl zu dem Fehler führt. Ich habe Reinhards Hinweis befolgt, bekomme aber den Error 400 zurück.


Sub blattname()
Dim bn As String

bn = Cells(1, 1)
bn = Replace(bn, ":", "")
bn = Replace(bn, "\", "")
bn = Replace(bn, "/", "")
bn = Replace(bn, "?", "")
bn = Replace(bn, "\*", "")
bn = Replace(bn, "[", "")
bn = Replace(bn, "]", "")
ActiveSheet.Name = bn
End Sub

Hallo Reinhard, noch ne Idee?
Hallo Ulli,

also selbst wenn ich den Code unten wieder in eine Mappe kopiere, läuft der bei mir ohne Probleme.
Error 400 ist wieder so eine „aussagekräftige“ Meldung, die per Ferndiagnose schwer zu deuten ist.
Hast du eventuell bei deinem Excel die Makros verboten?

Hallo Reihard, Experte. Haste noch ne Idee?

Gruß, Andreas

Hallo Andreas und Reinhard, ich vermute, dass ich den Fehler selbst verursacht habe.
Ich habe den Code natürlich in mehrern Blättern gehabt. Beim Ausführen des Makros aber evtl. in Blatt2 den Code von Blatt1 ausgeführt, was zu doppelten Blattnamen geführt hätte. So habe ich den Fehler 400 zumindest provozieren können. In meinem Excel sind Makros nicht verboten, ich muß aber mal schauen, ob ich in meiner Tabelle ggf. andere Konflikte habe. In einer leeren Tabelle klappte es, wie gewünscht. Danke euch beiden. Gruß Ulli

Hallo Ulli,

der Code soll nicht in ein Tabellenmodul, sondern in ein Extra-Modul. Hier kann er dann für alle Tabellenblätter ausgeführt werden.
Also, wie ich schrob: „Einfügen - Modul“ und da hinein den Code. Aus den Blattmodulen muss er raus.

Gruß, Andreas

Hallo Andreas, ich bin da etwas unerfahren, aber hoffentlich noch lernfähig. Wird geändert. Danke nochmals

Gruß Ulli

Hallo Ulli, Andreas,

also selbst wenn ich den Code unten wieder in eine Mappe
kopiere, läuft der bei mir ohne Probleme.

das ist auch mein Problem, es kommt kein Fehler wenn ich das nachvollziehe.

Error 400 ist wieder so eine „aussagekräftige“ Meldung, die
per Ferndiagnose schwer zu deuten ist.

ach Andreas, Ulli ist schon sehr okay und gut dabei uns mitzuteilen was schief läuft. Gibt/gab da schon um Welten schlimmere hier.
Auch das mit der Trennungslinie ist eine gute Beschreibung.
Denn es sagt klar daß da mit dem eingefügten 10 zeiler mit recht kurzen Codezeilen was faul ist, jetzt gar nicht von der Vba-Logik her, irgendwelche unerwünschten Zeichen sind da auf einmal vorhanden.

Und der VB-Editor hat da das Eingefügte so eingefügt wie er es kapiert hat.
So wie eine Trennungslinie automatisch erscheint wenn man oben (wie man es machen sollte) Option Explicit in jedem Modul hat.
Fügt man dann eine Prozedur, eine Sub ein so kommt diese Trennungslinie.

Jetzt hat da der VB-Editor da wohl was in dem was Ulli aus Outlook kopierte gesehen was ihn vernalasste da auch eine Trennungslinie zu ziehen.
Aber dann ergaben die Codezeilen oder was da stand keinen Vba-Sinn mehr und er hat sie farblich markiert als faul.

Ich fordere also ehrenvollen Freispruch in allen Punkten für Ulli :smile:
Einzig für die Zukunft, bitte immer Fehlernummer, beschreibung UND die Codezeile angeben wo das auftritt.
Oder aber wenn der Code gar nicht startet und eine Fehlermeldung auch den Nichtstart angeben.

Hast du eventuell bei deinem Excel die Makros verboten?

Hätte er so käm keine Vba-Fehlermeldung.

Hallo Reihard. Haste noch ne Idee?

Ja, so wird das nix *gg* Wir brauchen eine neue Taktik.
@Ulli lade bitte eine mappe hoch deinen makros.
Hochladen mit fileupload o.ä., s. FAQ:2606

Gruß
Reinhard

Danke Reinhard, funktioniert einwandfrei,wenn man leere
Blätter erstellen will. Mein Wunsch war aber, aus vorhanden
Vorlagen den Arbeitsblattnamen zu generieren.

Hallo Ulli,

du hast eine Vorlage, also eine xlt. Gut. Nach Start dieser Vorlage hast du eine offene Mappe die Name.xls heißt.
Dann sollen in dieser Mappe 12 Monatsblätter eingefügt werden.
Mein Code macht das, was genau stört dich dabei?

Gruß
Reinhard

Hallo Reinhard und Andreas, bin jetzt unter Termindruck, werde die Sache morgen noch mal in Ruhe angehen und Feedback geben. Das Eigenleben der Kopiererei aus Outlook war mir leider im ersten Augenblick nicht aufgefallen, aber ich arbeite dran. Für heute sage ich vielen Dank und Tschüs! Ulli

Hallo Ulli,

Hallo Andreas und Reinhard, ich vermute, dass ich den Fehler
selbst verursacht habe.

ich kann deine Vermutung bestätigen :smile:

Ich habe den Code natürlich in mehrern Blättern gehabt. Beim
Ausführen des Makros aber evtl. in Blatt2 den Code von Blatt1
ausgeführt, was zu doppelten Blattnamen geführt hätte.

? Wieso hattest du den Code in verschiedenen Blättern.
Der Code gehört in ein Standardmodul, Modul1, Modul2 usw.
Die erzeugst du wie von Andreas gesagt über Einfügen—Modul ein neues Standardmodul.
Die Module der Blätter dienen anderen zwecken.

So habe
ich den Fehler 400 zumindest provozieren können.

Ich nicht. Bei doppeltem Namen was verboten ist kommt Fehler 1004.
An der Codezeile wo ich den Namen zuweise.
Andere Fehlernummer hat aber nicht unbedingt etwas zu bedeuten.
Hängt von Faktoren ab die nix mit dem Code zu tun haben.

ich muß aber mal schauen, ob
ich in meiner Tabelle ggf. andere Konflikte habe. In einer
leeren Tabelle klappte es, wie gewünscht.

Das ist ja auch das Problem von Andreas und mir, wir haben ja quasi leere Mappen/tabellen. Bei uns klappt alles, bei dir gelegentlich nicht.

Deshalb mein Vorschlag daß du da die mappe hochlädst.

Gruß
Reinhard

Sorry, Ulli und Reinhard,

da hab ich mich missverständlich ausgedrückt. Das mit der „aussagekräftigen Fehlermeldung“ sollte keine Kritk an Ulli sein, sondern an VBA.

Gruß,
Andreas