37. Datei kann nur X mal geöffnet werden

Aufgabenstellung:

Eine Datei sollte nur 5 mal geöffnet werden können. Nachdem die Datei 5 mal geöffnet wurde, sollte ein erneutes Öffnen nur durch ein Passwort geschehen können. Außerdem sollte bei erfolgreicher Passworteingabe der komplette VBA Code, der für die Überprüfung der Öffnungsversuche benötigt wird, automatisch gelöscht werden.

Dieses Beispiel steht auch als Beispieldatei zum Download zur Verfügung.


Realisiert wurde das durch eine VBA-Lösung.

Der Code ist in das VBA Projekt DieseArbeitsmappe einzufügen.


Private
 Sub Workbook_BeforeClose(Cancel As Boolean)

'Das Blatt "Zaehlblatt1" wird eingeblendet
Sheets("Zaehlblatt1").Visible = True

'Das Blatt "Tabelle1" wird ausgeblendet
Sheets("Tabelle1").Visible = xlVeryHidden

'Das Blatt "Tabelle1" wird ausgeblendet
Sheets("Zaehlblatt").Visible = xlVeryHidden

'Die deaktivierten Funktionen in den Symbolleisten werden
'wieder eingeblendet
Symbolleisten_Aktivieren

'Speicherabfrage wird beim Beenden unterdrückt und die
'Datei wird gespeichert.
ThisWorkbook.Close True
End Sub

Private Sub Workbook_Open()
'Den Variablen "Anz" und "Versuche" werden ihrem
'Variablentyp zugewiesen
Dim Anz As String, Versuche As Integer

'Div. Funktionen werden in den Symbolleisten deaktiviert
Symbolleisten_Deaktivieren

'Wert, wie oft die Datei geöffnet werden darf
Versuche = 5

'In Blatt Zaehlblatt in Zelle D1 wird die Zahl 1 addiert
Worksheets("Zaehlblatt").Cells(1, 4).Value = _
Worksheets("Zaehlblatt").Cells(1, 4).Value + 1

'Berechnung des Wertes 5 minus des Wertes aus Zelle D1 in
'Blatt "Zaehlblatt"
Wert = Versuche - Worksheets("Zaehlblatt") _
.Range("D1")

'Wenn der Wert in Zelle D1 in Blatt "Zaehlblatt"
'größer x dann ....
If Worksheets("Zaehlblatt").Range("D1") <= Versuche Then
        
'Messagebox zeigt an, wie oft die Datei noch geöffnet
'werden kann
MsgBox "Sie können die Datei noch " & Wert & "x öffnen" & Chr(13) & Chr(13) _
& "Danach benötigen Sie ein Passwort, um mit dieser Datei weiterarbeiten zu können." & Chr(13) & Chr(13) _
& "Das Passwort können Sie unter Klaus@Mustermann.de bestellen."

'Das Blatt "Tabelle1" wird eingeblendet
Sheets("Tabelle1").Visible = True

'Das Blatt "Zaehlblatt" wird ausgeblendet
Sheets("Zaehlblatt1").Visible = xlVeryHidden

'In Zelle E3 die Anzahl der noch verbleibenden Öffnungen schreiben
Range("E3") = Wert
Else

'Messagebox aufrufen
MsgBox "Sie haben Ihre " & Versuche & "  Versuche verbraucht. Um die Datei wieder öffnen" & Chr(13) & Chr(13) _
& " zu können, benötigen Sie ab jetzt ein Passwort. Das Passwort können Sie" & Chr(13) & Chr(13) _
& " unter Klaus@Mustermann.de bestellen."

'Eingabefenster für Passworteingabe öffnen
If InputBox("Bitte Paßwort eingeben!", "Abfrage") = "Passwort" Then

'Ist das Passwort richtig wird das Blatt "Tabelle1" wird eingeblendet
Sheets("Tabelle1").Visible = True

'Blatt "Tabelle1" wird aktiviert
Sheets("Tabelle1").Select

'Makro "Tabellenblätter_einblenden" ausführen
Tabellenblätter_einblenden

'Makro "Tabellenblätter_löschen" ausführen
Tabellenblätter_löschen

'Makro "Symbolleisten_aktivieren" ausführen
Symbolleisten_Aktivieren

'Befehl muss vorhanden sein, damit nachfolgende Anweisung
'abgearbeitet werden kann
DoEvents

'Makro "Passwort_aus" wird ausgeführt
Passwort_aus

'Befehl muss vorhanden sein, damit nachfolgende Anweisung
'abgearbeitet werden kann
DoEvents

'Makro "LöschMakro" wird ausgeführt
LöschMakro

Else

'Ist das Passwort falsch, wird die Datei geschlossen
ActiveWorkbook.Close False

'Abfrage Ende
End If

'Abfrage Ende
End If

End Sub

Sub LöschMakro()
'Löscht bei erfolgreicher Eingabe des Passwortes 126 Zeilen
'des Codes ab Zeile 1, also alles auf dieser Seite
 Application.VBE.ActiveVBProject.VBComponents(1). _
 CodeModule.DeleteLines 1, 227
End Sub

Sub Passwort_aus()

' Hinweise für die Keys
    ' % = Alt
    ' ^ = Strg
    ' + = Shift
'Visual Basic öffnen
SendKeys "%{F11}"

'Extras/Eigenschaften
SendKeys "%xi"

'Passwortabfrage
SendKeys "Passwort"

'Passw. abschicken
SendKeys "{enter}"

'Eigenschaftsfenster verlassen
SendKeys "{esc}"

'VBA Umgebung beenden
SendKeys "%dh"
End Sub

Sub Tabellenblätter_einblenden()

'Das Blatt "Zaehlblatt" wird eingeblendet
Sheets("Zaehlblatt").Visible = True

'Das Blatt "Zaehlblatt1" wird eingeblendet
Sheets("Zaehlblatt1").Visible = True
End Sub

Sub Zähler_löschen()

'Der Bereich C1 bis C50 wird markiert....
Worksheets("Zaehlblatt").Range("D1").ClearContents
End Sub

Sub Tabellenblätter_löschen()

'Abfrage, ob Tabellenblätter gelöscht werden sollen,
'wird deaktiviert
Application.DisplayAlerts = False

'Die Tabellenblätter "Zaehlblatt" und "Zaehlblatt1"
'werden gelöscht
Sheets(Array("Zaehlblatt", "Zaehlblatt1")).Delete

'Abfrage, ob Tabellenblätter gelöscht werden sollen,
'wird aktiviert
Application.DisplayAlerts = True
End Sub

Sub Symbolleisten_Aktivieren()
With Application
'Das RollUp Menü, was beim Betätigen der rechten
'Maustaste erscheint wird aktiviert
 .CommandBars("Toolbar List").Enabled = True
 
'Die Funktion "Anpassen" Im Menüpunkt "Extras"
'wird aktiviert
 .CommandBars("Worksheet Menu Bar"). _
  Controls("Extras").Controls("Anpassen...").Enabled = True
    
'Die Funktion "Makro" Im Menüpunkt "Extras" wird aktiviert
 .CommandBars("Worksheet Menu Bar"). _
  Controls("Extras").Controls("Makro").Enabled = True
End With
End Sub
Sub Symbolleisten_Deaktivieren()
'Die Symbolleiste "Steuerelement/Toolbox" wird
'deaktiviert falls geöffnet
Application.CommandBars("Control Toolbox").Visible = False
    
'Die Symbolleiste "Visual Basic" wird deaktiviert
'falls geöffnet
Application.CommandBars("Visual Basic").Visible = False

With Application
'Das RollUp Menü, was beim Betätigen der rechten Maustaste
'erscheint wird deaktiviert
.CommandBars("Toolbar List").Enabled = False
    
'Die Funktion "Anpassen" Im Menüpunkt "Extras" wird deaktiviert
 .CommandBars("Worksheet Menu Bar"). _
  Controls("Extras").Controls("Anpassen...").Enabled = False
    
'Die Funktion "Makro" Im Menüpunkt "Extras" wird deaktiviert
 .CommandBars("Worksheet Menu Bar"). _
  Controls("Extras").Controls("Makro").Enabled = False
End With
End Sub

 


Dieses Beispiel wurde unter den in der Tabelle aufgeführten Versionen getestet.

  A B C D E
1        

2

 

Excel - Version

Getestet

 
3      
4   Excel 2007 12.0 a  
5   Excel 2003 11.0 a  
6   Excel 2002 10.0 a  
7   Excel 2000 9.0 a  
8   Excel 97 8.0    
9          
10   Anzahl der Downloads:

 
11          
12   Dieses Beispiel wurde bereits  x aufgerufen.  
13    
14          

 


> Beispieldatei herunterladen <

  Sollten beim Ausführen der Beispieldatei Fehler auftreten, bitte ich darum, mir eine Mail mit der Fehlerbeschreibung an fehler@excelbeispiele.de zu schicken.
Danke!

 Möchten Sie www.excelbeispiele.de in Ihre Favoriten aufnehmen? Dann Klicken Sie hier.
 

Kontakt:

letzte Aktualisierung am 06.01.2008

© 2004 - Copyright Oliver Scheckelhoff,
All Rights Reserved