Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
436to440
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
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

zeitliche Begrenzung

zeitliche Begrenzung
10.06.2004 15:51:49
Sören
Ein herzliches Hallo an alle Helfer, hier im Forum.
Kann ich eine Arbeitsmappe zeitliche begrenzen? Ich möchte eine Test-Datei versenden, die man für 14 Tage testen kann und dann sollte sich die Datei nicht mehr öffnen lassen - vielleicht mit einem Hinweis auf den Ablauf.
Ich hoffe, es kann mir jemand helfen.
Vielen Dank und viele Grüße
Sören

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zeitliche Begrenzung
Kurt
Das geht nur mit VBA. Wenn die Makros aber deaktiviert sind, kannst du das Öffnen nicht
verhindern.
Kurt
AW: zeitliche Begrenzung
Veit
man kann aber die Blätter beim schließen über VBA ausblenden. Dann nützt dem anderen auch die geöffnete Arbeitsmappe nichts.
Ein Veit
AW: zeitliche Begrenzung
Kurt
Lies doch mal die Frage:
"sollte sich die Datei nicht mehr öffnen lassen"
Kurt
AW: zeitliche Begrenzung
Veit
ist doch ganz einfach (und schon vielfach hier im Forum zum Einsatz gekommen):
beim schließen blendest du alle Blätter per vba aus (xlSheetVeryHidden=dann kann man es auch nicht über die Menüleiste wieder einblenden)
beim öffnen machen die aktivierten Makros die Blätter wieder sichtbar .visible=true
möglich wäre auch noch dass sich die Datei selber löscht wenn sdas Verfallsdatum erreicht ist.
Allerdings ist das alles VBA
Ein Veit
Anzeige
AW: zeitliche Begrenzung
Veit
kleine Korrektur:
nicht alle Blätter ausblenden eins muß stehen bleiben (kann man ja zur Laufzeit erstellen). Auf dieses Blatt kann man ja dann schreiben "Bitte starten sie die Datei mit aktivierten Makros neu" oder aber nach Ablauf der Frist "Die Frist ist abgelaufen..."
Ein Veit
AW: zeitliche Begrenzung
10.06.2004 23:48:52
Sören
Vielen Dank an Kurt und Veit, nur leider habe ich keine Ahnung von VBA.
meine Idee: Ich gebe in die Zelle A1 "=Heute" ein und in die Zelle A2 das Ablaufdatum.
Über die Formel =WENN(A1

Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Address
If Target.Address <> "$A$3" Then Exit Sub
If UCase(Target.Value) = "2" Then Worksheets("Tabelle2").Visible = False
If Target.Value = "1" Then Worksheets("Tabelle2").Visible = True
End Sub

Leider funktioniert es nicht, wenn die Formel in A3 steht.
Könnt Ihr mir einen anderen Weg zeigen?
Vielen Dank
Sören
Anzeige
AW: zeitliche Begrenzung
Veit
versuche mal diesen Weg:
'Diesen Code in "DieseArbeitsmappe" nicht Tabelle, nicht Modul
'Funktion:
' Beim schließen der Mappe wird:
'1. ein neues Blatt als "warnung" hinzugefügt und
'2. alle anderen Blätter ausgeblendet
'3. die Änderungen gespeichert
' Beim Öffnen der Mappe wird:
'0. Wenn Mappe ohne aktivierte Makros gestartet wird, sieht der User nur das Warnblatt
'1. Kontrolliert ob Verfallsdatum überschritten ist wenn ja dann Abbruch --> Blätter werden nicht sichtbar, User hat eine Datei mit der er nichts anfangen kann
'2. wenn noch Zeit ist, dann einblenden aller Blätter
'3. Löschen des temporären "Frist-Makro"-Blattes
' Wichtig:
'der VBA-Code muß natürlich Pswd-geschützt sein.

Private Sub Workbook_BeforeClose(Cancel As Boolean) 'beim schließen der Mappe
'Application.EnableCancelKey = xlDisabled       'keine Fehlerbehandlung
Sheets.Add Before:=Worksheets(Worksheets.Count) 'Blatt dazu
Sheets(1).Name = "Frist-Makros"                 'und benennen
With Sheets("Frist-Makros")
For i = 1 To 10 Step 2                      'ein bisschen was als Info auf das Blatt schreiben
If Date > "12.06.2004" Then             'abhängig vom Datum
.Cells(i, i).Value = "Der Testzeitraum ist abgelaufen.."
Else
.Cells(i, i).Value = "Bitte starten Sie die Datei mit aktivierten Makros neu."
End If
Next i
End With
For i = 1 To Worksheets.Count                   'alle Blätter ausser Blatt(Frist-Makros) ausblenden (und das gründlich)
If Sheets(i).Name <> "Frist-Makros" Then Worksheets(i).Visible = xlVeryHidden
Next i
Application.DisplayAlerts = False
ActiveWorkbook.Save                             'Änderungen speichern
Application.DisplayAlerts = True
'Application.EnableCancelKey = xlInterrupt      'anschalten der Fehlerbehandlung
End Sub


Private Sub Workbook_Open()                     'beim Öffnen der Mappe
Application.EnableCancelKey = xlDisabled        'keine Fehlerbehandlung
If Date > "12.06.2004" Then                     'wenn das Ende-Datum erreicht wurde
MsgBox "Der Testzeitraum ist abgelaufen."   'Info
Application.EnableCancelKey = xlInterrupt   'anschalten der Fehlerbehandlung
Exit Sub                                    'verlassen der Routine --> Blätter werden nicht eingeblendet
End If
For i = 1 To Worksheets.Count                   'alle Blätter einblenden
Worksheets(i).Visible = True
Next i
Application.DisplayAlerts = False               'ausschalten der Abfrage ob ja oder nein
Sheets("Frist-Makros").Delete                   'Sonderblatt löschen
Application.DisplayAlerts = True                'anschalten der Bildschirmdialoge
Application.EnableCancelKey = xlInterrupt       'anschalten der Fehlerbehandlung
End Sub

Gruß
Ein Veit
Anzeige
Vielen Dank
11.06.2004 09:11:33
Sören
Hallo Veit, deine Lösung ist wesentlich eleganter und funktioniert.
besten Dank
Sören
doch noch mal ich
11.06.2004 09:55:20
Sören
Hallo Veit, habe die Datei jetzt ausgiebig getestet und stelle fest, dass immer das erste Blatt nach dem Schließen verschwindet - gelöscht wird(?). Dafür erscheint ein neues, leeres, Blatt zwischen den anderen? Woran liegt das oder was muss ich ändern, damit des eingefügte Blatt immer ganz vorn in der Arbeitsmappe erschein?
Vielen Dank
Sören
AW: doch noch mal ich
Veit
Sorry mein Fehler.
Ersetze bitte in
Private Sub Workbook_BeforeClose(Cancel As Boolean)
die Zeile
Sheets.Add Before:=Worksheets(Worksheets.Count)
durch
Sheets.Add Before:=Worksheets(1)
Das müßte funzen.
Gruß
Ein Veit
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige