Clever-Excel-Forum

Normale Version: Makro inkl. Seitenlayouts
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen,

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
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
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.
(07.11.2016, 14:51)RPP63 schrieb: [ -> ]Moin!

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
Ich habe ein Deckblatt (Tabellenblatt)
Dort trage ich von A1 bis A6 die offenen Themen ein.

Mit meinem Makro werden für diese Punkte jeweils ein neues Tabellenblatt erstellt wird, dass auch genauso benannt wird.

Nur sind diese neuen Tabellenblätter leer (kein Layout)

Da möchte ich nun meine vorher definierte Excel-Vorlage für benutzen.

Sprich es soll weiterhin neue Registerkarten erstellt werden mit dem Begriff und dazu halt noch mein Layout dazu.
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
  For Each Zelle In Worksheets("Inhalt").Range("A1:A6")
     .Copy After:=Sheets(Sheets.Count)
     ActiveSheet.Name = Zelle
  Next
  .Visible = False
End With
End Sub

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
(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
  For Each Zelle In Worksheets("Inhalt").Range("A1:A6")
     .Copy After:=Sheets(Sheets.Count)
     ActiveSheet.Name = Zelle
  Next
  .Visible = False
End With
End Sub

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 :

Index außerhalb des gültigen Bereichs
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.
Im Anhang einmal diese Excel Liste
Seiten: 1 2