Makro automatisch Seiten erstellen und Inhalt einfügen
#1
Hallo,

habe eine Funktion die mir neue Tabellenblätter erstellt, die wie folgt benannt werden AI7:AI52. 

Sub FuegeBlaetterMitNamenEin()
Dim Bereich As String
Dim Zelle As Range
Dim Tabelle As Worksheet
Bereich = "AI7:AI52" 'MaxAI52 Bereich der Namen für die Dateien
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




Nun fehlt mir aber noch eine Funktion die Inhalte einer Tabellenblatt-Vorlage kopiert. Leider verstehe ich nicht ganz wie das Makro funktioniert, deswegen klappen meine Ergänzungsversuche nicht. 

kann mir mal jemand erklären, wie ich das mache?
Top
#2
Kannst Du nicht die Vorlage duplizieren, anstatt neue leere Blätter zu erstellen, und dann Inhalt einzufügen?
Das würdest Du mit Makro aufzeichen sicher hinbekommen.

Gruß
Sebastian
[-] Folgende(r) 1 Nutzer sagt Danke an Bast4i für diesen Beitrag:
  • jon
Top
#3
Ich verstehe nicht ganz genau was du meinst. Das ist erst mein 2tes VSB Projekt.


Mein Vorteil sehe ich dadrin das ich den Code öfters benutzen könnte und Der Tabellenblattname mit 

der Formel
=TEIL(ZELLE("Dateiname");FINDEN("]";ZELLE("Dateiname"))+1;255)    ' gibt den Namen der Arbeitsmappe in einer Zelle wieder

würde mir dann helfen mit sverweis,.. etc zu arbeiten.
Top
#4
Ich habe diesen code von einem meinem MB bekommen, aber irgendwie bekomme ich es auch nicht damit hin.

WsName müsste ich ja mit meinem "Datenblatt" ergänzen und "Vorlage" müsste WsKopie sein. Irgendwie müsste ich die schleife dann noch ergänzen und meinen Tabelle aus dem "Datenblatt" AI7:AI52 einfügen. 

Komme mir gerade richtig dumm vor. Aber irgendwie klappt gerade nichts.


Code:
Sub FuegeBlätteEin() 
Dim WsNamen As Worksheet      'Sheet, in dem die Namen stehen 
Dim WsKopie As Worksheet      'Sheet, das kopiert werden soll 
Dim i As Integer 

Application.ScreenUpdating = False 

'Sheet, in dem die Namen stehen: 
   Set WsNamen = ThisWorkbook.Worksheets("Tabelle1") 
    
'Sheet, das kopiert werden soll 
   Set WsKopie = ThisWorkbook.Worksheets("Tabelle1") 

'Schleife 
   For i = 50 To 1 Step -1 
      WsKopie.Copy After:=Sheets(xlLast) 
      ActiveSheet.Name = WsNamen.Cells(i, 1).Value 
      ActiveSheet.Range("A1").Value = WsNamen.Cells(i, 1).Value 
   Next 
    
Application.ScreenUpdating = True 

Set WsKopie = Nothing 
Set WsNamen = Nothing 

End Sub
Top
#5
Ich hab die Aufgabenstellung noch nicht verstanden.

1. Du willst Tabellenblätter neu anlegen. ->ok
2. Die Tabellenblätter sollen bestimmte Namen haben.->ok
3. Die Namen liest Du aus einer Tabelle aus. ->ok
4. Die Tabellenblätter sollen einen Inhalt bekommen. Ist der Inhalt immer derselbe?

Also sagen wir Du hast ein Tabellenblatt "Vorlage" und dessen Inhalt sollen dann auch alle neu angelegten Blätter haben? Nur die Namen dieser neuen Blätter sollen anders sein?

Gruß
Sebastian
Top
#6
Ja du hast recht. Also der Inhalt der Vorlage ist immer der Gleiche bis auf einen Wert. 

btw: Die Anzahl der Blätter variiert von der Anzahl der  Werte (Daten) aus der Tabelle.
Top
#7
Hallo Jon.

Dann dast Du´s ja schon. Dein erster Code war doch schon ganz gut. Der legt ja neue Blätter an.
Jetzt musst Du nur die Kopie nicht von dem Blatt machen, das die Tabellennamen enthält, sondern von der Vorlage.

Probier mal die Funktion Makro aufzeichnen aus. Damit kannst Du Dir den Code erzeugen lassen, um ein Blatt zu kopieren, bzw. den Namen zu ändern. Ich glaube, dass schaffst Du selber, das zusammen zu bauen!

Gruß
Sebastian
Top
#8
Hab es ja schon probiert aber ich verstehe den Code wohl nicht richtig. An welcher stelle müsste denn der Kopierte teil rein? 

Habe das Macro nicht richtig verstanden glaub ich.
Top
#9
Hallo

wenn du wissen willst wie Makros funktionieren, wie man Tabellen auflistet und umbenennt, schau dir bitte die Beispieldatei in diesem Thread an:  
.Tabellenblattnamen automatisch vergeben  - Übersicht Demo.xlsx (Größe: 10,98 KB)

mfg  Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • jon
Top
#10
Hallo Jon.

Hier mal ein etwas einfacherer Code.

Code:
Sub Makro1()

Dim Zaehler As Integer

For Zaehler = 1 To 3
    Worksheets("Vorlage").Copy After:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = Worksheets("Namen").Cells(Zaehler, 1)
Next

End Sub
Ich gehe hier davon aus, dass die Tabelle, in der die Namen stehe "Namen" heißt, und die Vorlage "Vorlage". Das kannst Du ja anpassen.
Außerdem gehe ich davon aus, dass die Namen in A1 bis A3 stehen (Cells(Zaehler, 1)). Das kannst Du auch anpassen.

Somit hast Du schon mal die Basisfunktionalität. Jetzt musst Du entweder im Code immer den Bereich anpassen, in dem die Namen stehen, Du sagtest ja, dass sich das ändert, oder das Makro so anpassen, dass es das selbst herausfindet. Die Startzelle ist ja vermutlich immer gleich, nur die Anzahl der Namen ändert sich.

Als Tipp: Zeichne immer einen einzelnen Schritt auf. Dann kannst Du Dir leicht anschauen, wie der Befehl funktioniert. Also z. B. erst nur ein Blatt kopieren, das verstehen, dann Namen ändern, das verstehen,.......
So kannst Du Dir die Makros leicht selbst erarbeiten.

Gruß
Sebastian
Top


Gehe zu:


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