Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro inkl. Seitenlayouts
#1
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
Antworten Top
#2
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)
Antworten Top
#3
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!

Grüße aus Norderstedt, Peter
Antworten Top
#4
(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.
Antworten Top
#5
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)
Antworten Top
#6
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.
Antworten Top
#7
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
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)
Antworten Top
#8
(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
Antworten Top
#9
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)
Antworten Top
#10
Im Anhang einmal diese Excel Liste


Angehängte Dateien
.xlt   Themen.xlt (Größe: 39,5 KB / Downloads: 2)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste