Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can

Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
27.09.2018 19:39:58
EFE
Hallo zusammen,
bin neu hier, zuerst mal wirklich eine tolle Community. Sehr Hilfsbereite Menschen.
Bin eigentlich ein Neuling wenn es um VBA geht. Aber ich hab es mal geschafft was zusammen zu stellen.
Kurze Erläuterung zur der Excel:
Habe 5-12 Tabellen, die je nach User eingeblendet bzw. ausgeblendet werden. Je nach Berechtigung kann der User die Tabellen sehen.
Die User dürfen bei dieser Excel nur "Speichern" und "Speichern unter" deaktiviert ist.
Jetzt die Probleme:
1. Wenn die User "Speichern" (was auch funktioniert*grins*) schließt mir das Makro die ganzen Tabellen, auch die wo der User Berechtigung hat (das gilt auch für den AdminUser), bis auf die 2 freien Tabellen.
2. Da ich AdminUser die Berechtigung für alle Tabellen hat, kann er Trotzdem nicht "Speichern unter"
Wie bekomme ich das eigentlich hin, für den AdminUser "Speichern unter" erlaubt ist.
Hoffe das diese Fragestellung euch mein Problem erklärt.
Und wie gesagt bin nicht der VBA Killer, habe das mit sehr viel lesen und Hilfe zusammen gestellt.
Hier noch was ich zusammengebastelt habe:
Im DieseArbeitsmappe:
Option Explicit
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Call Macros.userEinfügen
Call Macros.blätterAusblenden
Call Macros.userFreigabe
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Arbeitsblatt As Worksheet
If SaveAsUI Then
MsgBox "Ein Versuch wars Wert ;)", vbCritical, "Speichern unter nicht erlaubt!"
Else
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Tabelle8.Visible = xlSheetVisible
For Each Arbeitsblatt In Worksheets
If Not Arbeitsblatt Is Tabelle8 Then _
Arbeitsblatt.Visible = xlSheetVeryHidden
Next
ThisWorkbook.Save
For Each Arbeitsblatt In Worksheets
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVisiable
Sheets("").Visible = xlSheetVisible
Next
Tabelle8.Visible = xlSheetVisible
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
ThisWorkbook.Saved = True
End If
Cancel = True
End Sub

Im Modul:

Option Explicit
Sub blätterAusblenden()
Dim ws As Worksheet
For Each ws In Worksheets
Sheets("Startblatt").Activate
If ws.Name  "Startblatt" Then
ws.Visible = xlSheetVeryHidden
End If
Next
End Sub
Sub userEinfügen()
Sheets("User").Range("A2") = Environ$("username")
End Sub
Sub userFreigabe()
Dim varUser As Variant
Dim lngZeile As Long
Dim intSpalte As Integer
Dim ws As Worksheet
With Sheets("User")
varUser = .Range("B2").Value
lngZeile = 2
Do While .Cells(lngZeile, 5).Value  varUser And lngZeile  "" Then
For Each ws In Worksheets
ws.Visible = True
Next
Else
intSpalte = 7
Do While .Cells(1, intSpalte).Value  ""
Set ws = Sheets(.Cells(1, intSpalte).Value)
If .Cells(lngZeile, intSpalte).Value  "" Then
ws.Visible = True
Else
ws.Visible = xlSheetVeryHidden
End If
intSpalte = intSpalte + 1
Loop
End If
Else
Call falscherUser
End If
End With
End Sub
Sub BlattUser()
Sheets("User").Visible = xlSheetHidden
Sheets("User").Visible = True
End Sub
Sub falscherUser()
End Sub

LG EFE

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
27.09.2018 21:59:52
onur
Hallo EFE,
Nix für Ungut, aber der Code ist wirklich amüsant.
Du brauchst Jemanden, der ihn dir netterweise komplett neu schreibt, das ginge schneller, als ihn zu "sanieren".
Gruß
Onur
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
27.09.2018 23:27:06
EFE
Hallo Onur,,
Danke für deine Antwort, sieht es so schlimm aus?
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
28.09.2018 06:32:14
onur
Hallo EFE,
Halb so schlimm, Anfänger halt..
Du solltest aber mal die Datei (oder eine Beispieldatei) posten und nochmal genau erklären, welcher User was darf und was genau passieren soll, wenn das und das passiert.
Gruß
Onur
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
28.09.2018 08:10:18
Torsten
das ist alles im BeforeSave event.
If SaveAsUI Then
MsgBox "Ein Versuch wars Wert ;)", vbCritical, "Speichern unter nicht erlaubt!"
Else

Hier fragst du nur ab, wie gespeichert werden wollte, nicht wer. Deshalb ist das fuer alle gesperrt.

ThisWorkbook.Save
For Each Arbeitsblatt In Worksheets
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVeryHidden
Sheets("").Visible = xlSheetVisiable
Sheets("").Visible = xlSheetVisible
Next
und hier versteckst du die ganzen sheets.
Anzeige
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
28.09.2018 11:44:32
EFE
Hallo Torsten,
Genau da ist ja auch mein Problem.
Wie binde ich jetzt welchen code und wie in den bestehenden ein.
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
28.09.2018 11:44:34
EFE
Hallo Torsten,
Genau da ist ja auch mein Problem.
Wie binde ich jetzt welchen code und wie in den bestehenden ein.
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
29.09.2018 12:37:33
onur
Wenn du meinen Rat vom 28.09.2018 06:32:14 befolgt hättest, hättest du evtl. schon längst eine Antwort.
AW: Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Can
01.10.2018 11:52:41
EFE
Hallo Onur,
sorry das ich mich erst jetzt melde. Zu viel Stress Momentan.
Nun habe ich eine Test_Mappe erstellt, die Test_Mappe funktioniert einwandfrei nach meinen Wünschen.
Nun zum Problem: Speichern untern habe ich deaktiviert, kein User darf die Datei „Speichern unter“, nun habe ich das Problem das der Admin auch keine Rechte hat „Speichern unter“ zu verwenden. Und genau das sollte für den Admin eraubt sein.
Aber wenn man die Test_Mappe öffnet und testet wird man gleichh fündig was ich meine.
Hab die makros deaktiviert, müsste man wieder einschalten.
https://www.herber.de/bbs/user/124347.xlsm
LG EFE
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige