neues Tabellenblatt verhindern

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: neues Tabellenblatt verhindern
von: Christian
Geschrieben am: 19.09.2015 07:33:00

Das Problem ist, dass ich verhindern möchte, dass ein neues Tabellenblatt (über das "PLUS") angelegt werden kann.
Meine Datei ist Freigegeben (Multi-User) und über andere Makros werden Tabellenblätter generiert.
Einen vergleichbaren Hinweis gibt es schon, aber mit diesem komme ich nicht weiter:


Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
MsgBox "Sie haben keine Berechtigung", vbOKOnly + vbExclamation, "Hinweis"
Sh.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Dabei wird zuerst das neue Blatt angelegt und versucht es wieder zu löschen. Dies geht dann allerdings aufgrund Multi-User-Fähigkeit nicht mehr.
Ich möchte generell verhindern, dass die verschiedenen Anwender über normale Befehle oder Mouseclicks ein neues Blatt anlegen können.
Kennt einer eine Lösung dazu?

Bild

Betrifft: AW: neues Tabellenblatt verhindern
von: Nepumuk
Geschrieben am: 19.09.2015 08:16:20
Hallo,
vor der Freigabe Arbeitsmappe schützen.
Gruß
Nepumuk

Bild

Betrifft: AW: neues Tabellenblatt verhindern
von: Christian
Geschrieben am: 19.09.2015 08:36:21
Hallo
danke für den Hinweis, aber den hatte ich schon probiert.
Wie oben beschrieben, sollen neue Arbeitsblätter durch Makros hinzugefügt werden.
Dies funktioniert allerdings bei geschützten Arbeitsmappen nicht.
Und wenn ich den Schutz wieder aufheben will, muss zuvor die Freigabe aufgehoben werden. Dies muss vermieden werden.
Weiterer Vorschlag?
Christian

Bild

Betrifft: AW: neues Tabellenblatt verhindern
von: Daniel
Geschrieben am: 19.09.2015 14:23:26
Hi
wenn niemand eine bessere Idee hat, dann blende die fälschlich erstellten Blätter doch einfach aus.
Das funktioniert auch wenn die Mappe freigegeben ist.
Das neue Blatt ist dann zwar da, aber nicht sichtbar. Wenn es mit .Visible = xlsheetveryhidden ausgeblendet wurde, kann es vom Anwender mit Excelbordmitteln auch nicht wieder eingeblendet werden.
hierzu folgende Code im New-Sheet-Event:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Visible = xlSheetVeryHidden
MsgBox "Verwenden Sie zum Erstellen von weiteren Blättern das Makro"
End Sub
Wenn jetzt ein Makro neue Blätter erstellen soll, dann kannst du so das automatische Ausblenden über das Event verhindern:
Application.EnableEvents = False
AcitveWorkbookSheets.Add
Application.EnableEvents = True
über Application.EnableEvents kannst du steueren, ob die Eventmakros ausgeführt werden sollen oder nicht.
da die ausgeblendeten Blätter leer sind, sollten sie auch nicht weiter stören und man kann eine ganze Menge davon haben, bis sich das auf die Performance oder den Speicherplatz auswirkt (ausser, der Anwender kopiert vorhandene Blätter mit grosser Datenmenge, aber das darf er in einer freigegebenen Mappe ja auch nicht)
Um diese Blätter zu entfernen, muss der Verantwortliche dann gelegentlich die Freigabe zurücknehmen und dann diesen Code laufen lassen:
dim wsh as worksheet
application.displayalerts = false
for each wsh in activeworkbook.Worksheets
    if wsh.visible = xlsheetveryhidden then wsh.delete
next
application.displayalerts = true

Gruss Daniel

Bild

Betrifft: AW: neues Tabellenblatt verhindern
von: Christian
Geschrieben am: 21.09.2015 18:12:41
Hallo Daniel
eine schöne Lösung, welche ich temporär einsetzen werden, bis ich eine Lösung zum ausblenden/deaktivieren von dem "plus" habe.
Danke
Christian

 Bild

Beiträge aus den Excel-Beispielen zum Thema "neues Tabellenblatt verhindern"