assistenz
Goto Top

Vorlage für neue Tabellenblätter festlegen (für eine Mappe) - Excel 2010

Hallo!

nachdem mir schon hervorragend geholfen wurde, hier noch ein Anliegen, das mir enorm weiterhelfen würde:

In einer Arbeitsmappe (ich nenn sie mal A.xls) eine Vorlage für alle neuen Tabellenblätter festlegen.

Wichtig: Ich möchte NICHT für alle Arbeitsmappen, also für "ganz Excel" dieses Format festlegen, sondern nur innerhalb des einen Dokuments!

Herzlichen Dank im Voraus!
Julian

Content-Key: 519930

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

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: 141965
141965 28.11.2019 um 10:47:12 Uhr
Goto Top
Mitglied: Assistenz
Assistenz 29.11.2019 um 09:17:24 Uhr
Goto Top
Super Tipp!

Was mir noch fehlt: Ich möchte, dass dieses neue Tabellenblatt (Vorlage) nur eingefügt wird, wenn jemand auf "neues Tabellenblatt" klickt im Dokument (also z. B. auf die Schaltfläche unten rechts neben den ganzen Tabellenblättern als Reiter.)

Grüße
Mitglied: 141965
141965 29.11.2019 aktualisiert um 10:53:36 Uhr
Goto Top
Dafür gibt's in VBA das Event "NewSheet" damit kannst du darauf reagieren.
https://docs.microsoft.com/sl-si/office/vba/api/excel.workbook.newsheet
Mitglied: Assistenz
Assistenz 02.12.2019 aktualisiert um 10:16:27 Uhr
Goto Top
cool.
Ich habe vba noch nicht verwendet.
Da steht ein Beispiel-Code:

Private Sub Workbook_NewSheet(ByVal Sh as Object)
Sh.Move After:= Sheets(Sheets.Count)
End Sub


Wo und wie gebe ich dann jetzt meine Vorlage an/wie ist dafür gesorgt, dass neue Blätter der Vorlage gleichen?
Mitglied: 141965
141965 02.12.2019 um 11:58:41 Uhr
Goto Top
Vorlage-Sheet erstellen, es als "versteckt" kennzeichnen, dann im Event das "sh" Object löschen und anschließend das Template-Sheet kopieren, das Visible-Attribut des neuen Sheets auf True setzen, fertsch.
Mitglied: Assistenz
Assistenz 02.12.2019 aktualisiert um 14:39:42 Uhr
Goto Top
Zitat von @141965:

Vorlage-Sheet erstellen, es als "versteckt" kennzeichnen, dann im Event das "sh" Object löschen und anschließend das Template-Sheet kopieren, das Visible-Attribut des neuen Sheets auf True setzen, fertsch.

Hallo voucher. Das klingt für Kenner ziemlich unkompliziert. Nur leider habe ich 0,0 Erfahrung mit Makros/Visual Basic, kann es also nicht anwenden und würde mich sehr freuen, ein Beispiel (screenshots o. ä.) zu finden!

Vielen Dank!
Mitglied: 141965
141965 02.12.2019 aktualisiert um 15:18:13 Uhr
Goto Top
Zitat von @Assistenz:
Nur leider habe ich 0,0 Erfahrung mit Makros/Visual Basic,
Jeder fängt mal klein an:
https://www.guru99.com/vba-tutorial.html
https://docs.microsoft.com/de-de/office/vba/api/overview/excel
Mitglied: Assistenz
Assistenz 02.12.2019 um 15:33:31 Uhr
Goto Top
Zitat von @141965:

Vorlage-Sheet erstellen, es als "versteckt" kennzeichnen, dann im Event das "sh" Object löschen und anschließend das Template-Sheet kopieren, das Visible-Attribut des neuen Sheets auf True setzen, fertsch.

Danke für die EInführungs-Links! Leider ist aktuell überhaupt keine Zeit auf Arbeit, um das zu lernen.
Wäre es eine Option, mir kurz einen Hinweis zu geben, wo ich das "verstekct"-Attribut setze (und später auf "true" setze), wie ivh das "Event" erstelle? Das Sheet habe ich fertig erstellt und auch als template im selbigen Ordner abgelegt.
Mitglied: 141965
141965 02.12.2019 aktualisiert um 15:39:44 Uhr
Goto Top
Zitat von @Assistenz:
Wäre es eine Option, mir kurz einen Hinweis zu geben, wo ich das "verstekct"-Attribut setze
Rechtsklick auf das Sheet => Ausblenden
(und später auf "true" setze), wie ivh das "Event" erstelle? Das Sheet habe ich fertig erstellt und auch als template im selbigen Ordner abgelegt.
Wie schon gesagt Visible Eigenschaft des Sheets auf True setzen
https://docs.microsoft.com/de-de/office/vba/api/excel.worksheet.visible
Template kommt dann ins selbe Sheet nicht in ne extra Mappe.
Danke für die EInführungs-Links! Leider ist aktuell überhaupt keine Zeit auf Arbeit, um das zu lernen.
Dann eben nach der Arbeit. Von nix kütt nix. Wenn du es fix und fertig haben willst => PN

Viel Erfolg.

Ciao.
Mitglied: colinardo
colinardo 04.12.2019, aktualisiert am 05.12.2019 um 17:08:50 Uhr
Goto Top
Servus Julian,
hier eine Beispielmappe für dein Vorhaben
new_sheet_template_519930.xlsm
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    On Error Resume Next
    'Objekte definieren  
    Set regex = CreateObject("vbscript.regexp")  
    ' Regex Pattern für Nummern am Ende vom Arbeitsblattnamen  
    regex.Pattern = "\d+$"  

    With Application
        ' Deaktiviere temporär Events und Alerts  
        .EnableEvents = False
        .DisplayAlerts = False
        ' Lösche das Standard-Sheet von Excel (Wir haben ja unser eigenes  
        Sh.Delete
        ' Kopiere das "ausgeblendete" Template ans Ende aller Arbeitsblätter  
        Sheets("Template").Copy After:=Sheets(Sheets.Count)  
        With Sheets(Sheets.Count - 1)
            ' Suche die Nummer im Namen des vorherigen Sheets  
            Set matches = regex.Execute(Sheets(.Index - 1).Name)
            ' Gibt es eine benenne das neue Arbeitsblatt "TabelleX" wobei X eine Nummer größer ist als die Nummer des vorherigen  
            If matches.Count > 0 Then
                If IsNumeric(matches(0)) Then
                    .Name = "Tabelle" & (CInt(matches(0)) + 1)  
                End If
            End If
            ' Mache das Sheet sichtbar und aktivere es  
            .Visible = True
            .Activate
        End With
        ' Aktiviere temporär Events und Alerts  
        .EnableEvents = True
        .DisplayAlerts = True
    End With
    'Cleanup  
    Set regex = Nothing
End Sub
screenshot

Grüße Uwe
Mitglied: Assistenz
Assistenz 05.12.2019 um 12:40:50 Uhr
Goto Top
Hallo.

Danke für den Vorschlag!
Die Lösung mit versteckten Tabellenblättern ist leider keine Option für uns...
Eine Variante, das Template für neue Blätter als Standard zu setzen nur innerhalb dieses Dokuments gibt es nicht?
Grüße!
Mitglied: colinardo
colinardo 05.12.2019 aktualisiert um 12:55:06 Uhr
Goto Top
Zitat von @Assistenz:

Hallo.

Danke für den Vorschlag!
Die Lösung mit versteckten Tabellenblättern ist leider keine Option für uns...
Hi, du scheinst das misszuverstehen. Es gibt nur ein einziges verstecktes Template-Sheet das als Vorlage dient, davon wird beim Klick auf den Button zum Erstellen eines neuen Sheets (NewSheet Event) automatisch eine Kopie erstellt.
Eine Variante, das Template für neue Blätter als Standard zu setzen nur innerhalb dieses Dokuments gibt es nicht?
Das ist es doch , schaus dir einfach an. Das Skript läuft automatisch sobald der User neue Arbeistblätter erstellt, diese basieren automatisch auf dem versteckten Template Sheet, bzw. sind Kopien davon und nur in dieser Arbeitsmappe, also genau das was dir vorschwebt.