Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"Verschlüsselung" mit _BeforeSave

"Verschlüsselung" mit _BeforeSave
09.03.2008 18:26:00
Günter
Hallo Zusammen,
ich habe für mich ein nicht lösbare Aufgabe.
Folgende Aufgabe:
Ich habe meine Datei so abgesichert, dass die Daten nur gesehen werden können wenn 'Makros aktiviert' ist. D.h. Zum Dateiöffnen wird, wenn Makros nicht aktiviert werden,eine Dummy-Mappe angezeigt.
Werden Makros aktiviert werden alle Mappe über Workbook_Open eingeblendet und die Dummy-Mappe ausgeblendet.
Das gleiche läuft Rückwärts, wenn die Datei (mit Workbook_BeforeClose) geschlossen wird.
Das Ganz soll natürlich auch funktionieren, wenn SaveAs ausgeführt wird.
Hier soll aber die Mappe, die gerade sichtbar aus dem Bildschirm sichtbar bleiben in der gespeicherten Version natürlich die Dummy-Mappe.
Es könnte ja ein 'Schlauer' auf die Idee kommen, die mit SaveAs gespeicherte Datei nochmals mit SaveAs speichern. In der ersten SaveAs-Datei wäre beim nächsten Öffnen alles sichtbar.
Wenn ich das Ganze mit 'Workbook_BeforeSave' verfolge, erscheint bei mir die Dummy-Mappe.
Hier mein Code

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ff As Workbook
Dim mm As Worksheet
Dim anz As Integer
Dim KeyMappe As String
KeyMappe = "Key"
Dim ASheet As Worksheet
Set ff = ThisWorkbook
Set ASheet = ActiveSheet
For anz = 1 To ff.Sheets.Count
Set mm = ff.Sheets(anz)
If mm.Name = KeyMappe Then mm.Visible = True
Next anz
For anz = 1 To ff.Sheets.Count
Set mm = ff.Sheets(anz)
If mm.Name  KeyMappe Then mm.Visible = False
Next anz
End Sub


Habt Ihr vielleicht eine gute Idee?
Gruß Günter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Verschlüsselung" mit _BeforeSave
09.03.2008 20:32:00
Original
Hi,
willst du, dass Speichern unter... erlaubt ist oder nicht?
mfg Kurt

AW: "Verschlüsselung" mit _BeforeSave
09.03.2008 22:16:23
Günter
Hallo Kurt,
ja, das sollte noch möglich sein.
Gruß Günter

AW: "Verschlüsselung" mit _BeforeSave
09.03.2008 22:47:26
Fred
Hi,
"...Das gleiche läuft Rückwärts, wenn die Datei (mit Workbook_BeforeClose) geschlossen wird..."
Das passiert doch auch in der Datei, die mit SaveAs gespeichert wird, oder?
mfg Fred

AW: "Verschlüsselung" mit _BeforeSave
09.03.2008 23:34:00
Daniel
Hallo
im Prinzip musst du es so machen:
1. Blätter ausblenden (außer Key)
2. Datei speichern
3. Blätter wieder einblenden zum weiterarbeiten
versuche mal folgenden Code, die Unterscheidung zwischen SAVE und SAVEAS ist berücksichtigt.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ff As Workbook
Dim mm As Worksheet
Dim datname As String
Dim KeyMappe As String
Dim CheckSave As Boolean
Dim ASheet As Worksheet
Application.ScreenUpdating = False
Set ff = ThisWorkbook
Set ASheet = ActiveSheet
KeyMappe = "Key"
'--- Ausblenden
For Each mm In ff.Worksheets
Select Case mm.Name
Case KeyMappe
mm.Visible = xlSheetVisible
Case Else
mm.Visible = xlSheetVeryHidden
End Select
Next
'--- Speichern
Cancel = True
CheckSave = False
Select Case SaveAsUI
Case False
ff.Save
CheckSave = True
Case True
datname = Application.GetSaveAsFilename
If datname  "Falsch" Then
ff.SaveAs datname
CheckSave = True
End If
End Select
'--- Einblenden
For Each mm In ff.Worksheets
Select Case mm.Name
Case KeyMappe
mm.Visible = xlSheetVeryHidden
Case Else
mm.Visible = xlSheetVisible
End Select
Next
ASheet.Activate
ff.Saved = CheckSave
Application.ScreenUpdating = True
End Sub


ein paar Anmerkungen noch:
- verwende zum Ausblenden der Blätter lieber die Option mm.Visible = xlSheetVerryHidden.
bei FALSE (entspricht xlSheetHidden) können die Blätter über die Funktion FORMAT-BLATT-EINBLENDEN vom Anwender problemlos sichtbar gemacht werden. Werden die Blätter mit xlSheetVerryHidden ausgeblendet, geht das Einblenden nur über den VBA-Editor
- das Makro zum Ein- Ausblenden der Mappen beim Event BEFORE_CLOSE ist überfüssig und kann meiner Ansicht nach entfallen. Über BEFORE_SAVE ist es ausreichend abgedeckt, zumal wenn beim Schließen noch automatisch gespeichert wird, dann wird das BeforeSave-Makro auch aktiviert
- auch diesen Schutz kann der Anwender ganz einfach aushebeln:
1. vor dem Speichern wechselt der Anwender in den Entwurfsmodus
2. die Datei wird gespreichert und geschlossen
3. beim nächsten Öffnen deaktiviert der Anwender die Makros und kann voll auf die Datei zugreifen
Gruß, Daniel

Anzeige
AW: "Verschlüsselung" mit _BeforeSave
10.03.2008 07:30:00
Günter
Hallo Daniel,
danke für Dein Code.
Irgendetwas mach ich falsch.
Ich habe den kompletten Code in 'DieseArbeitsmappe' kopiert und das '_BeforeClose' Makro gelöscht.
Mein Problem ist, dass die Datei jetzt garnicht mehr gespeichert wird.
D.h. ich kann Speichern oder SpeichernUnter. Nachdem ich die Datei geschlossen habe steht der alte Code drin (also keine Änderungen gespreichert. Was mach ich falsch?
Hast Du vielleicht noch eine Idee zu Deiner ANmerkung "- auch diesen Schutz kann der Anwender ganz einfach aushebeln: ..."
Gruß Günter

AW: "Verschlüsselung" mit _BeforeSave
10.03.2008 22:49:00
Daniel
Hi
sorry, da ich nicht weiß, was du genau gemacht hast, kann ich dazu auch nichts sagen.
ne Beispieldatei wäre halt hilfreich, denn bei mir funktioniert der Code.
ich würde ihn vielleicht noch so abändern, damit das Makro sich nicht selber aufruft:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ff As Workbook
Dim mm As Worksheet
Dim datname As String
Dim KeyMappe As String
Dim CheckSave As Boolean
Dim ASheet As Worksheet
Application.ScreenUpdating = False
Set ff = ThisWorkbook
Set ASheet = ActiveSheet
KeyMappe = "Key"
'--- Ausblenden
For Each mm In ff.Worksheets
Select Case mm.Name
Case KeyMappe
mm.Visible = xlSheetVisible
Case Else
mm.Visible = xlSheetVeryHidden
End Select
Next
'--- Speichern
Cancel = True
CheckSave = False
Select Case SaveAsUI
Case False
Application.EnableEvents = False
ff.Save
Application.EnableEvents = True
CheckSave = True
Case True
datname = Application.GetSaveAsFilename
If datname  "Falsch" Then
Application.EnableEvents = False
ff.SaveAs datname
Application.EnableEvents = True
CheckSave = True
End If
End Select
'--- Einblenden
For Each mm In ff.Worksheets
Select Case mm.Name
Case KeyMappe
mm.Visible = xlSheetVeryHidden
Case Else
mm.Visible = xlSheetVisible
End Select
Next
If ASheet.Parent.Name = ff.Name Then ASheet.Activate
ff.Saved = CheckSave
Application.ScreenUpdating = True
End Sub


Ansonsten würde mir auch nichts einfallen, wie man Excel-Dateien sicherer machen kann.
Die Excel-Schutzmechanismen sind halt mehr dazu gedacht, den Anwender vor sich selbst zu schützen,(also um Fehlbedienungen zu vermeiden), aber nicht vor krimineller oder subversiver Energie.
Gruß, Daniel

Anzeige
Danke
13.03.2008 21:28:00
Günter
Hallo Daniel,
ich habe irgendetwas falsch gemacht.
Es funktioniert jetzt mit Deinem Vorschlag.
Danke
Gruß Günter

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige