Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Tabellenblätter nach Liste benennen





Frage

Ich möchte mit Excel folgendes machen: Ich habe eine Liste mit 160 Anmeldungen (Namen). Für jeden einzelnen Teilnehmer brauche ich ein standardisiertes Tabellenblatt, das im Idealfall mit dem Namen benannt ist. Der Inhalt der Tabellenblätter ist in einem Tabellenblatt "Muster" abgelegt. Kann man diese Tabellenblätter automatisiert erzeugen? Vielen Dank für alle Tips im Voraus! Klaus

Antwort 1 von Jonk

Probiers mal hiermit

Sub Makro1()

For n = 1 To 160
Sheets("Hauptblatt").Select
Sheets("Hauptblatt").Copy After:=Sheets(2)
Sheets("Namensliste").Select
Name = Range("B" & n).Text
Sheets("Hauptblatt (2)").Select
Sheets("Hauptblatt (2)").Name = Name
Next n
End Sub

Ersetze dabei "Hauptblatt" durch den Namen des Tabellenblatts, das du kopieren möchtest und ersetze "Namensliste" durch das Blatt auf dem deine Namen gelistet sind. Achte darauf, dass alle Namen untereinander stehen. In meinem Beispiel beginnt die Namensliste in Zelle B1.
Wenn deine Liste in C2 beginnen sollte änderst du Range("B"&n) in Range ("C"&n+1) etc.

Obs übersichtlich ist, mit 160 Blättern zu arbeiten ist ne andere Sache ;-) aber so sollte deine Frage beantwortet sein!?!
Sag mal obs funzt...

Gruß Jonk

Antwort 2 von lleopard

Hallo Klaus,

das kann man allerdings ... per VBA!

Aber...

Die Aufgabe erscheint mir müßig zu sein. 160 Anmeldungen in 160 Datenblätter mit jeweils dem gleichen "Muster"-Inhalt?

Das klingt sehr nach einem Serienbrief, den du erstellen willst...

trotzdem... also per VBA müßte das dann in etwas so aussehen:


On Error Resume Next
Dim oExcel As Excel.Application

Set oExcel = GetObject(, "Excel.Application ")
If Err.Number <> 0 Then Set oExcel = CreateObject("Excel.Application")
On Error GoTo 0

With oExcel
Randomize
.Sheets.Add ....
.Quit
End With

... Sachen gibts ...

Antwort 3 von Eubion

Vielen Dank für die schnellen Antworten. Ich bin schwer beeindruckt!
Ich kann noch nicht sagen, ob es klappt. Melde mich, sobald ich es probiert habe.

Zur Erklärung, warum ich das so brauche: Ich habe eine Liste mit Anmeldungen für Studienarbeiten und ein Bewertungsblatt. Im Bewertungsblatt werden individuell die Punkte geschrieben und aufaddiert und mit einem zentral hinterlegten Notenschlüssel in eine Note umgesetzt. Jeder bekommt ein Bewertungsblatt und darf nicht die Bewertungen der anderen sehen (sonst könnte man das ja einfach in Listen machen).

Aber wenn es dafür noch etwas Klügeres gibt, bin ich immer offen.

Antwort 4 von Eubion

Rückmeldung an die Antworten:

Habe nur das erste VBA-Projekt zum Laufen gebracht. Geht prima, Problem ist die Qualität der Tabellen: Makro stoppt jedesmal bei Doppeleintragungen oder gleichen Nachnamen.

Ich habe dann deine Verwunderung, das sei doch eher ein Serienbrief, zum Anlaß genommen und habe einfach Zeilen in Spalten umgewechselt und mache das alles jetzt in einer Liste. Dann kann man die Ergebnisse in Word als Serienbrief exportieren. Das ist eine viel bessere Lösung!

Trotzdem: Vielen Dank! Habe viel gelernt.

Antwort 5 von Jonk

Stimmt meine Version funzt nicht, wenn gleiche Namen in der Liste stehen, das könnte man natürlich umgehen, aber wenn du das nicht mehr brauchst...
Für solche umfangreichen Daten lohnt sich auch übrigens mal das Ausprobieren von Access... aber da kann ich leider nicht wirklich weiterhelfen.
Viel Erfolg, Jonk

Antwort 6 von eubion

Ja, Access wäre wohl die optimale Lösung. Ich habe schon oft angefangen, eine Datenbank zu bauen. Aber da ist der Einarbeitungsaufwand doch hoch und mir macht Excel einfach mehr Spaß. Außerdem behaupte ich immer, dass es kein Problem gibt, das man mit Excel nicht lösen kann...

Antwort 7 von lleopard

@ eubion

"Außerdem behaupte ich immer, dass es kein Problem gibt, das man mit Excel nicht lösen kann... "

Komisch! Das gleiche behaupte ich immer im Zusammenhang mit Access.

Sicher ist der Einarbeitungsaufwand nicht gerade gering, lohnt sich aber.

Wenn man ein wenig sucht, findet man zu Access die tollsten Sachen.

zB kannst du Access so programmieren, daß es wie ein "normales" Programm startet, also mit einem eigenen Logo, mit Formularen die selbst designt sind und du kannst die Formulare so einstellen, daß du nur das Formular siehst, nicht aber was dahinter passiert. UND man kann die Monitorauflösung verändern, Netzwerklaufwerke mappen, etc... also viele Windowsfunktionen über die API-Schnittstelle ansprechen. UND man kann natürlich vor alem x beliebige Daten verarbeiten, manipulieren ...

Sicher kann man vieles auch mit Excel machen. Aber das meiste kann man eben auch von Access aus an Excel übergeben.

So, genug von Access geschwärmt ;-)

Schönes WE an alle die hier mitlesen...

Gruß Leo

Antwort 8 von Eubion

Ich glaube ja gerne, dass Access viel drauf hat. Zum Einarbeiten ohne jegliche Anleitung und als dezidierten Hanbuch-Nicht-Leser ist das aber schwer. Gibt es denn da ein Buch zum Einarbeiten in Access im Sinne von "Reich und glücklich in 5 Minuten"? Dann packe ich es einfach mal an.
Danke für die Tips im Voraus!
Klaus

Antwort 9 von lleopard

@Eubion

Gibt es denn da ein Buch zum Einarbeiten in Access im Sinne von "Reich und glücklich in 5 Minuten"?

Neee, leider nicht! Insbesondere was die API-Schnittstellen angeht, steht es sehr schlecht um die Literatur. Es gibt aber ein paar sehr interessante Lern- & Arbeitshilfen. Eine ist die KnowHow.mdb, in der du auch viele Links und Anleitungen finden wirst. Aber eben auch nicht die Lösung aller Probleme. Manches muß man schon selber zusammensetzen und zusammensuchen.

Hier noch ein super Link zum Suchen und Weiterkommen:

http://www.mvps.org/access/

Viel Spaß und schönes WE

Antwort 10 von Snuddler

Hallo zusammen,

also das Problem was eubion hat/hatte habe ich auch. Ich muß mit rund 130 Tabellenblättern arbeiten. (Zeiterfassung Angestellte u. Verknüpfung zur Lohnliste usw. Angelegt vor meiner Zeit und alles von Hand....) passt auch alles, allerdings wollte ich sie nun neu machen, Zeitarten hinterlegen über sverweis abfragen, hat auch alles funktioniert, dank jonks makro. Nun habe ich aber das mit dem doppelten Namen.

und ist es möglich wenn ich die zeitdaten der Angestellten schon vorliegen habe (steht in einer Liste untereinander weg, Vor jeder zeile name und PersNr. ) gleich mit in das Blatt kopieren?

Ich hoffer ihr könnt mir helfen :o)

Gruß Snuddler

Antwort 11 von Jonk

Sub Makro1()
For n = 1 To 130
    nummer = 0
    Variable2 = 0
    Variable1 = False
    Sheets("Hauptblatt").Select
    Sheets("Hauptblatt").Copy After:=Sheets(2)
    Sheets("Namensliste").Select
    ersatzname = Range("B" & n).Text
    hilf = ersatzname
    Sheets("Hauptblatt (2)").Select
For j = 1 To n
    If Sheets(n + 3 - j).Name = hilf Then
        nummer = nummer + 1
        hilf = ersatzname & nummer
    End If
Next j
    Sheets("Hauptblatt (2)").Range("C1") = Sheets("Namensliste").Range("C" & n).Text
    Sheets("Hauptblatt (2)").Name = hilf
Next n
End Sub


Das Makro legt dir 130 Tabellenblätter an. Bezeichnung ist gleich der Namen die im Tabellenblatt "Namensliste" von B1 bis B130 aufgelistet werden. Wenn doppelte Namen auftauchen, werden die Blätter mit dem Namen und einer Zahl versehen (Bsp: Bernd1, Bernd2).
Auf den neuen Tabellenblättern werden Angaben die neben den Namen stehen (C1 bis C130) auf dem neuen Tabellenblatt in die Zelle C1 geschrieben.
Ich hoffe es funktioniert so bei dir, wenn du Schwierigkeiten hast, den Code auf dein Projekt anzugleichen, einfach nochmal posten.

Grüße Jonk