ich habe ein Tabellenblatt, wo Oberbegriffe eingetragen werden.
Diese sollen als "Überschrift" der weiteren Tabellenblätter dienen.
Dieses konnte ich bereits in ein Makro einbauen.
Jetzt sollen jedoch diese neu erstellten Tabellenblätter auch meine Excel Vorlage als Layout haben.
Wie geht das?
Habe etwas mit -> ThisComponent.Sheets().getByIndex(0).pagestyle = "Test123" gelesen.
Wie baue ich das dann in mein Makro ein?
Sub FuegeBlaetterMitNamenEin()
Dim Bereich As String
Dim Zelle As Range
Dim Tabelle As Worksheet
Bereich = "a1:a6"
With ActiveWorkbook
For Each Zelle In ActiveSheet.Range(Bereich).Cells
Set Tabelle = .Sheets.Add(After:=.Sheets(Sheets.Count))
Tabelle.Name = Zelle.Text
Next Zelle
End With
End Sub
07.11.2016, 14:51 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2016, 14:56 von RPP63.
Bearbeitungsgrund: Code berichtigt
)
Moin!
Zitat:Jetzt sollen jedoch diese neu erstellten Tabellenblätter auch meine Excel Vorlage als Layout haben.
Dann erstelle Dir ein Blatt "Vorlage" mit dem entsprechenden Layout.
Dein Blatt mit den "Überschriften/Blattnamen" heißt "Inhalt".
Warum arbeitest Du mit den ganzen Variablen?
Die sind doch gar nicht notwendig und machen imo den Code unübersichtlich.
Code:
Sub FuegeBlaetterMitNamenEin()
Dim Zelle As Range
For Each Zelle In Worksheets("Inhalt").Range("A1:A6")
Worksheets("Vorlage").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Zelle
Next
End Sub
Aber Achtung!
Tabellenblätter haben gewisse Konventionen.
(Länge, Sonderzeichen, keine doppelten Namen)
Daher muss eine vernünftige Fehlerbehandlung eingearbeitet werden.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
07.11.2016, 15:08 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2016, 15:09 von Käpt'n Blaubär.)
Hallo,
Zitat:Jetzt sollen jedoch diese neu erstellten Tabellenblätter auch meine Excel Vorlage als Layout haben.
Ich lese das so, daß die Blätter alle den gleichen Aufbau haben.
Was spricht dann dagegen, das Blatt einfach zu kopieren und dann den neuen Blattnamen anzupassen.
Mit VBA ließe sich sowas auch automatisieren.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Dann erstelle Dir ein Blatt "Vorlage" mit dem entsprechenden Layout.
Dein Blatt mit den "Überschriften/Blattnamen" heißt "Inhalt".
Warum arbeitest Du mit den ganzen Variablen?
Die sind doch gar nicht notwendig und machen imo den Code unübersichtlich.
Code:
Sub FuegeBlaetterMitNamenEin()
Dim Zelle As Range
For Each Zelle In Worksheets("Inhalt").Range("A1:A6")
Worksheets("Vorlage").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Zelle
Next
End Sub
Aber Achtung!
Tabellenblätter haben gewisse Konventionen.
(Länge, Sonderzeichen, keine doppelten Namen)
Daher muss eine vernünftige Fehlerbehandlung eingearbeitet werden.
Gruß Ralf
Ich habe mir den Code oben von mir so erstellt.
Möchte eigentlich nicht noch zwei weitere Tabellenblätter dort stehen haben.
Lieber wäre es mir, wenn ich eine Vorlage als .xlt speichern und diese irgendo in dem Code mit einbauen.
Zitat:Möchte eigentlich nicht noch zwei weitere Tabellenblätter dort stehen haben.
Und wo sollen die Namen der Blätter herkommen?
Man kann die Vorlage auch ausblenden.
Dann spricht auch nichts dagegen, das Ganze als Vorlage abzuspeichern.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Ich habe Dich schon verstanden, Du mich aber wohl noch nicht. ;)
1. Erstelle eine Tabelle "Vorlage" mit dem entsprechenden Layout und blende sie aus.
2. Dein Deckblatt hast Du ja bereits.
3. Da die Vorlage nun ausgeblendet ist, muss das Makro erweitert werden:
Sub FuegeBlaetterMitNamenEin() Dim Zelle As Range
Application.ScreenUpdating = False With Worksheets("Vorlage")
.Visible = True ForEach Zelle In Worksheets("Inhalt").Range("A1:A6")
.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Zelle Next
.Visible = False EndWith EndSub
4. Speichere die Datei als Vorlage mit Makros ab.
Wenn Du diese Vorlage mit Datei, neu öffnest, hast Du alles was Du brauchst.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
(07.11.2016, 15:41)RPP63 schrieb: Ich habe Dich schon verstanden, Du mich aber wohl noch nicht. ;)
1. Erstelle eine Tabelle "Vorlage" mit dem entsprechenden Layout und blende sie aus.
2. Dein Deckblatt hast Du ja bereits.
3. Da die Vorlage nun ausgeblendet ist, muss das Makro erweitert werden:
Sub FuegeBlaetterMitNamenEin() Dim Zelle As Range
Application.ScreenUpdating = False With Worksheets("Vorlage")
.Visible = True ForEach Zelle In Worksheets("Inhalt").Range("A1:A6")
.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Zelle Next
.Visible = False EndWith EndSub
4. Speichere die Datei als Vorlage mit Makros ab.
Wenn Du diese Vorlage mit Datei, neu öffnest, hast Du alles was Du brauchst.
Gruß Ralf
achsoooo meinst du das!
Habe ich nun so gemacht und dann kommt nach dem Öffnen der vorher abgespeicherten Vorlage :
07.11.2016, 16:10 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2016, 16:10 von RPP63.)
Dann stimmen Deine Blattnamen "Vorlage" und "Inhalt" nicht.
(Leerzeichen dahinter?)
Ansonsten lade mal Deinen bisherigen Stand hier hoch, dann schaue ich mal drüber.
Gruß Ralf
P.S.:
Bitte kein Full-Quote!
Zum antworten einfach auf Antworten klicken, nicht auf Zitatantwort.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)