hesperus
Goto Top

Excel Tabellenblatt automatisch erstellen und umbenennen

Kopieren eines vorhandenen Tabellenblattes in Excel und umbenennen anhand einer Liste

Guten Abend zusammen,

ich habe ein kleines Problem und hoffe Ihr könnt mir helfen.

Ich habe ein Excel Dokument in welchem es bisher zwei Tabellenblätter (1. "Übersicht", 2. "Vorlage") gibt.
Auf dem Blatt "Übersicht" gibt es eine Spalte Namen, welche von J12 bis J186 unterschiedlich lange Namen enthällt.

Ich würde jetzt gern das Blatt Vorlage für jeden Namen 1x kopieren und entsprechend in den Namen umbenennen.

Leider sind meine eigenen Makro Kentnisse dafür zu gering.

Ich würde mich freuen, wenn Ihr einen Vorschlag für mich hättet.

Schon einmal vielen Dank & einen schönen Sonntag noch
Hesperus

Content-ID: 148081

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

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

bastla
bastla 01.08.2010 um 19:27:11 Uhr
Goto Top
Hallo Hersperus!

Das könnte etwa so gehen:
Sub Erstellen()

For Each NeueTabelle In Worksheets("Übersicht").Range("J12:J186").Value 'alle Zellinhalte von J12 bis J186 durchgehen  
    Sheets("Vorlage").Copy After:=Sheets(Sheets.Count) 'Vorlagetabelle als letztes Blatt in die Arbeitsmappe kopieren  
    Application.DisplayAlerts = False 'Rückfrage (nach dem Löschen einer bestehenden Tabelle) unterdrücken  
    'Versuch, eine gleichnamige Tabelle zu löschen; bei Fehler (= Tabelle ohnehin nicht vorhanden) einfach weitermachen  
    On Error Resume Next: Sheets(NeueTabelle).Delete: On Error GoTo 0
    Application.DisplayAlerts = True 'Systemeldungen wieder einschalten  
    Sheets(Sheets.Count).Name = NeueTabelle 'neue Tabelle (= letztes Blatt der Mappe) umbenennen  
Next

MsgBox "Fertig."  
End Sub
Bitte beachten: Ev bereits bestehende Tabellen (wenn zB in J12 "KW01" stünde und es bereits eine Tabelle dieses Namens gäbe) werden kommentarlos gelöscht.

Grüße
bastla
Hesperus
Hesperus 01.08.2010 um 20:10:00 Uhr
Goto Top
Hallo Bastla,

erst einmal vielen Dank für die Hilfe.

Leider funktioniert es so noch nicht. Wenn ich das Markro ausführe, kommt der Laufzeitfehler 9 "Index außerhalb des gültigen Bereichs". Beim Debuggen zeigt er auf die Zeile 3.

Ich hatte zuerst vemutet, dass es an zu langen Namen liegt aber ein test mit aufeinanderfolgenden Nummern bringt den gleichen fehler.
bastla
bastla 01.08.2010 um 20:13:25 Uhr
Goto Top
Hallo Hersperus!

Dürfte am Tabellennamen "Übersicht" liegen ...

Grüße
bastla
Hesperus
Hesperus 01.08.2010 um 20:28:27 Uhr
Goto Top
Hattest Recht Bastla, der Fehler lag am Namen.

Hab den Namen geändert und er hat auch ein Neues Blatt angelegt aber das Blatt "Vorlage" ist "verschwunden" und daher kommt schon wieder ein Laufzeitfehler 9 (zeile2)....

Hättest du noch ne Idee?

many Thx!
bastla
bastla 01.08.2010 um 21:03:56 Uhr
Goto Top
Hallo Hersperus!

Selbst wenn es in der Liste in J12:J186 den Eintrag "Vorlage" gäbe, müsste zumindest die Kopie erstellt (und dann auch wieder mit "Vorlage" benannt) worden sein ...

Welches ist denn bei Dir die Zeile 2?

Du kannst übrigens im VBA-Editor den Cursor in eine beliebige Zeile zwischen "Sub" und "End Sub" stellen und dann mit der Taste F8 schrittweise das Makro durchführen lassen - wenn Du den Inhalt zB der Variablen "NeueTabelle" oder den Wert von "Sheets.Count" (liefert die Anzahl der Blätter und damit die Nummer der bislang letzten Tabelle) prüfen willst, einfach mit dem Mauscursor auf die entsprechende Stelle des Codes zeigen.

Zwischenzeitlich kannst Du auch in das Excel-Fenster wechseln (oder gleich beide Fenster nebeneinander anordnen), auch wenn das in diesem Fall nicht allzuviel bringen wird ...

Grüße
bastla
76109
76109 01.08.2010 um 23:34:30 Uhr
Goto Top
Hallo bastla!

Hab's mit Leerzellen getestet und dann treten tatsächlich die von Hersperus genannten Fehler auf und das Tabellenblatt Vorlage ist auch wegface-wink

@hersperus
Also vor Zeile 4 einfügen:
If Not IsEmpty(NeueTabelle) Then
und nach Zeile 9:
End If
dann sollte es funktionierenface-wink

Gruß Dieter
bastla
bastla 01.08.2010 um 23:45:41 Uhr
Goto Top
Hallo Dieter!

Den Fehler hinsichtlich des ungültigen Tabellennamens (und dafür gäbe es natürlich auch noch andere Möglichkeiten als ein Leerstring) kann ich reproduzieren - das Verschwinden der Tabelle "Vorlage" kriege ich aber nicht hin. face-wink

Dein Zusatz ist auf jeden Fall sinnvoll, allerdings wäre eigentlich eine vollständige Prüfung des Namens auf Verträglichkeit mit den Excel-Konventionen für Tabellennamen (die ich mir gelegentlich einmal genauer ansehen muss) erforderlich ...

Grüße
bastla
76109
76109 02.08.2010 um 00:14:46 Uhr
Goto Top
Hallo bastla!

Zitat von @bastla:
Den Fehler hinsichtlich des ungültigen Tabellennamens (und dafür gäbe es natürlich auch noch andere
Möglichkeiten als ein Leerstring) kann ich reproduzieren - das Verschwinden der Tabelle "Vorlage" kriege ich aber
nicht hin. face-wink
Mhm, jetzt kriege ich's auch nicht mehr hin, aber vorhin war's beim testen mit Leerzellen auf einmal wegface-smile
Verträglichkeit mit den Excel-Konventionen für Tabellennamen (die ich mir gelegentlich einmal genauer ansehen muss)
erforderlich ...
Das würde ich wiederum auch über Error Resume Next machen (If Err...)

Gruß Dieter
Hesperus
Hesperus 04.08.2010 um 11:31:59 Uhr
Goto Top
Hallo Bastla & Dieter,

habt erst einmal vielen Dank für eure Antworten und die Hilfe, dies hat mir sehr geholfen (auch das ich wusste, dass nicht nur bei mir Probleme waren face-wink ).

@ Bastla: Was auf alle Fälle nicht geklappt hat, ist das automatische überschreiben der eventl. vorhandenen Mappen aber das ist nicht schlimm gewesen.


Eine letzte Frage hätte ich jetzt in diesem Zusammenhang noch:

Ich habe jetzt mein Exceldokument mit ca. 200 Mappen und auf der ersten Mappe (Übersicht) die Spalte (J12-J212) mit den Namen der einzelnen Mappen. Besteht die Möglichkeit mit einer Formel oder ggf. mit einen Makro in der Spalte K einen Hyperlink zu der jeweiligen Mappe anzulegen?
Hab es schon mit Zusammenfüger mehrerer Zellen versucht & den Befehl Hyperlink aber irgendwie klappt das nicht.

Noch einmal vielen Dank
LG Hesperus
76109
76109 04.08.2010 um 13:05:58 Uhr
Goto Top
Hallo Hesperus!

Mit Mappen meinst Du vermutlich Tabellenblätter, denn nach meinem Verständnis sind Mappen Arbeitsmappen bzw. Excel-Dateien.

Falls Du also Tabellenblätter meinst, dann ließe sich das in etwa so machen, wobei der Tab-Name in der Spalte J steht und der Link bzw. Formel z.B. in Spalte K.
=WENN(J12<>"";HYPERLINK("[MeineDatei.xls]" & J12 & "!A1";"Link");"")
Allerdings wird der Link - zumindest bei mir - nicht in blau mit Unterstrich angezeigtface-wink

Andernfalls ließe sich das auch per Makro machen (in blau mit Unterstrich)

Gruß Dieter
Hesperus
Hesperus 04.08.2010 um 14:18:14 Uhr
Goto Top
Hallo Dieter,

sorry meinte natürlich Tabellenblätter. Bin heute irgendwie ein bissl neben der Spur face-smile.

Die Formel hat perfekt funktioniert (sogar mit blauen Unterstrich face-wink ).

habt nochmals vielen Dank
LG Hesperus