AW: Arbeitmappe und Code schützen
11.01.2006 23:06:14
Harry
Hallo Jessica,
1) auf Deine Frage
"Wie schütze ich Code damit in den Anwender nicht ausversehen ändert und ich jederzeit rannkomme?"
folgendes:
IM Projekt-Explorer unter Extras - Eigenschaften von VBAProject... im Register
"Schutz" das Projekt für die Anzeige sperren (Kästchen aktivieren), Kennwort
eingeben+bestätigen - fertig!
(Für VB/VBA-Profis ist das Entfernen des Kennwortes zwar kein Problem, für den
Normalbenutzer dürfte es wohl reichen.)
2) 'ne andere Variante für den Blattschutz beim Ändern über VBA:
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'Diesen Code in Standardmodul:
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub Ändern_trotz_Blattschutz()
Dim myPW
myPW = "MeinKennwort" '(z.Bsp.)
ActiveSheet.Protect Password:=myPW
'und hier der Code für die Änderung z.Bsp.:
Call Meine_Änderung '...Prozedurnamen gegebnenfalls anpassen
'oder Code reinschreiben...
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True, Password:=myPW
End Sub
3) auf Deine Frage
"Meine Datei darf nicht gespeicht werden. Wie bekomme ich es hin das der Nutzer darauf hingewiesen wird das er einträge Vorgenommen hat und diese noch nicht über den Button speichern in einer anderen Arbeitsmappe gespeichert hat."
folgendes (2 Beispiele):
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'Diese Codes in das Klassenmodul der Arbeitsmappe kopieren:
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub Workbook_Open()
Dim Rechner ' ...Schreibzugriff über den Computernamen
Rechner = Environ("Computername") '=Systemname für Computer (als Bsp.)
'z.B.:
If Rechner <> "MyComputer" Then
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
MsgBox "Die Arbeitsmappe ist jetzt schreibgeschützt."
End If
End Sub
'oder
Private Sub Workbook_Open()
Dim Hostbenutzer ' ...Schreibzugriff über den Benutzernamen
Hostbenutzer = Environ("UserName") '=Anmeldename für Computer (als Bsp.)
'z.B.:
If Hostbenutzer <> "Jessica" Then
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
MsgBox "Die Arbeitsmappe ist jetzt schreibgeschützt."
End If
End Sub
Die Bezeichnungen für Anmelde- bzw. Systemname musst Du gegebenenfalls
anpassen ("Jessica" oder "MyComputer" dienen hier nur als Beispiel).
Nutzerhinweis beim Schliessen der Datei:
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'Diesen Code in das Klassenmodul der Arbeitsmappe:
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ActiveWorkbook.Saved = False Then
MsgBox "Die Datei muss noch gespeichert werden!", vbExclamation
Else
MsgBox "Es wurden keine Änderungen vorgenommen.", vbInformation
End If
End Sub
Ich hoffe Dir ein wenig geholfen zu haben.
Viell Spass beim Ausprobieren!
Gruss
Harry