AW: Einzelne Blätter vor Copy und Druck schützen
06.07.2006 09:10:14
Harald
Moin Michael,
hier mein Lösungsvorschlag:
Alle Codes ins Modul DieseArbeitsmappe
Bewirkt, dass die Blätter nur bei aktivierten Makros sichtbar sind
Bewirkt, wenn in dem betreffenden Blatt in A1 ein x steht (kannste ändern),
diverse Funktionen gesperrt sind.
Das Ganze bietet natürlich keine 100% Sicherheit und ist aushebelbar.
Bei geschütztem vba-Projekt (im Editor unter Extras, Eigenschaften von..)
müssten deine User aber schon knuspern ;-)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Byte
'beim Schliessen alle Blätter ausser Tabelle1 ausblenden
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Tabelle1" Then Sheets(i).Visible = False
Next i
End Sub
Private Sub Workbook_Open()
Dim i As Byte
'beim Öffnen mit ! aktivierten Makros alle Blätter einblenden
For i = 1 To Sheets.Count
Sheets(i).Visible = True
Next i
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Funktionen sperren bei Blatt aktivieren und x in A1
If ActiveSheet.Range("A1") = "x" Then
Call procControlEnableDisable(848, False) 'Blatt verschieben, kopieren
Call procControlEnableDisable(2521, False) 'Drucken (Symbolleiste)
Call procControlEnableDisable(4, False) 'Datei drucken
Call procControlEnableDisable(19, False) 'kopieren
Call procControlEnableDisable(21, False) 'Ausschneiden
End If
End Sub
Private Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
For Each myCommandBar In Application.CommandBars
Set myCommandBarControl = myCommandBar.FindControl(ID:=intId, Recursive:=True)
If Not myCommandBarControl Is Nothing Then myCommandBarControl.Enabled = bolStatus
Next
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'Funktionen freigeben bei Blattwechsel
Call procControlEnableDisable(848, True)
Call procControlEnableDisable(2521, True)
Call procControlEnableDisable(4, True)
Call procControlEnableDisable(19, True)
Call procControlEnableDisable(21, True)
End Sub
Gruss Harald