Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

 [Excel 2000] Bitte um hilfe bei VBA
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
usebb
Newbie
Newbie


Anmeldedatum: 05.11.2008
Beiträge: 7

BeitragVerfasst am: 05.11.2008, 23:33 Nach oben

Hallo
Ich habe ein Prob-. mit VBA

Ich habe eine Tabelle die nur für eine Testphase frei ist,
danach kann man nur mit einen PW diese weiter benutzen.
So weit so gut !
Nun muss ich aber nach der Testphase jedes mahl das PW eingeben was nicht gut ist! Rolling Eyes

Frage : Gibt es da eine Lösung damit wenn ich das PW einmal eingegeben habe dann die Sperre aufgehoben ist ? Idea




Private Sub Workbook_Open()
Application.DisplayAlerts = False
Heute = Now
Verfalldatum = #11/3/2008# 'Hier Verfalldatum im Format MM/TT/JJJJ eintragen

If Verfalldatum < Heute Then
Dim passwort As String
passwort = InputBox("Die Testphase ist abgelaufen," & Chr(13) & Chr(13) & " bitte geben Sie Ihre Registrierungs-Nr.: ein" & Chr(13) & Chr(13) & "die Sie von usebb erhalten haben !", "Testphase abgelaufen, Reg.Nr. erforderlich von usebb")
If passwort <> "abcd" Then 'Hier PW eingeben
MsgBox " Das Kennwort ist ungültig," & Chr(13) & Chr(13) & "der Vorgang wird abgebrochen !"
ThisWorkbook.Close
End If
MsgBox ("Registrierung erfolgreich")
Application.DisplayAlerts = True
End If
End Sub
Benutzer-Profile anzeigenPrivate Nachricht senden
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 472
Wohnort: Kiel

BeitragVerfasst am: 06.11.2008, 08:13 Nach oben

usebb hat Folgendes geschrieben:
Ich habe ein Prob-. mit VBA

Ach, noch mehr Probleme hättest du ohne VBA... Wink

Zitat:
Frage : Gibt es da eine Lösung damit wenn ich das PW einmal eingegeben habe dann die Sperre aufgehoben ist ? Idea


Das würde bedeuten, daß Du Dir irgendwo "merken" mußt, daß das Passwort bereits einmal erfolgreich eingegeben wurde. Und dafür gibt's sicherlich mehr als genug Möglichkeiten.

Du könntest einen Schlüssel in der Registry setzen. Das ist vielleicht pauschal die "schönste" Methode, außer vielleicht bei fehlenden Admin-Rechten.

Du könntest eine INI-Datei erstellen, die beim Starten ausgelesen wird. Das wird auch immer wieder gerne gemacht, weil es auch die Möglichkeit bietet, noch ein paar andere Informationen zwischen den Sitzungen zu speichern.

Du könntest in irgendeiner Zelle irgendeines Arbeitsblattes einen Wert setzen. Das ist vielleicht die schnellste und einfachste Methode. Ich würde dafür ein ausgeblendetes Tabellenblatt in der Mappe hinterlegen. Welche Zelle dort? Naja, vielleicht nicht immer die gleiche, sondern eine, die vom Benutzernamen abhängig ist?

Nur mal so grob vor mich hingesponnen...

Code:
x=0
for i=1 to len(vorname)
  x=x+asc(mid$(vorname,i,1))
next x
x=x mod 256 + 1
y=0
for i=1 to len(nachname)
  y=y+asc(mid$(nachname,i,1))
next y
y=y mod 65536 + 1

Das wäre mal ein ganz simpler Algorithmus, um aus dem Vornamen und Nachnamen die x- und y-Koordinaten zu berechnen. Hier werden einfach die ASCII-Werte der Buchstaben addiert und danach der Rest der Division durch 256 (Spalten) bzw. 65536 (Zeilen) genommen.

Um ein Blatt vor dem Einblenden durch den User zu schützen, gibt es die Eigenschaft xlVeryHidden. Der User sieht das Blatt nicht, wenn er "Format - Blatt - Einblenden" auswählt.

Wenn es schon in die Richtung geht, wäre es vielleicht auch sinnvoll, das Datum des ersten Aufrufs der Datei dort zu hinterlegen. Nach dem Paßwort wird dann erst nach Ablauf von z.B. 30 Tagen nach diesem Datum gefragt. Oder Du zählst die Anzahl der Aufrufe der Datei mit und fragst nach dem 50. Aufruf das erste mal nach dem Paßwort.

Wie gesagt, Möglichkeiten genug... Wie sicher letztendlich ein Schutz ist, sprich: wie leicht er umgangen werden kann, ist dann wieder eine ganz andere Frage und auch vom Kenntnisstand der User abhängig.

Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
usebb
Newbie
Newbie


Anmeldedatum: 05.11.2008
Beiträge: 7

BeitragVerfasst am: 06.11.2008, 13:59 Nach oben

Hallo miriki

Also mir würde gefallen wen das PW nach der eingab in Tabelle1 B1 abgelegt würde.

Tabelle1 B1 bis B5 ist frei und wird ausgeblendet.

Nun müsste ich nur wissen wie das alles dan aussehen müste .
Würdest du mein Code so abendern das das dan Passt ?


Würde mich freuen über deine hilfe


mfg usebb
Benutzer-Profile anzeigenPrivate Nachricht senden
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 472
Wohnort: Kiel

BeitragVerfasst am: 06.11.2008, 23:04 Nach oben

usebb hat Folgendes geschrieben:
Würdest du mein Code so abendern das das dan Passt ?

Klar... Ich hab aus dem workbook_open mal folgenden Code gebastelt:
Code:
Private Sub Workbook_Open()

    Const Blatt_Parameter = "Tabelle2"
    Const Zelle_Passwort = "B1"
    Const Passwort_Korrekt = "abcd"
    Const Datum_Verfall = #11/3/2008#

    Dim Passwort_Gespeichert As String
    Dim Passwort_Eingabe As String
    Dim Datum_Heute As Date

    Datum_Heute = Int(Now())

    If Datum_Verfall < Datum_Heute Then

        Passwort_Gespeichert = Trim$(Worksheets(Blatt_Parameter).Range(Zelle_Passwort).Value)
        If Passwort_Gespeichert <> Passwort_Korrekt Then

            Passwort_Eingabe = InputBox("Die Testphase ist abgelaufen," & Chr(10) & " bitte geben Sie Ihre Registrierungs-Nr.: ein," & Chr(10) & "die Sie von usebb erhalten haben!", "Testphase abgelaufen, Reg.Nr. erforderlich von usebb")
            If Passwort_Eingabe <> Passwort_Korrekt Then

                MsgBox "Das Kennwort ist ungültig," & Chr(10) & "der Vorgang wird abgebrochen!"
                ThisWorkbook.Close savechanges:=False

              Else

                Worksheets(Blatt_Parameter).Range(Zelle_Passwort).Value = Passwort_Korrekt
                ThisWorkbook.Save

            End If

        End If

    End If

End Sub

Und was hier jetzt passiert...

Zuerst einmal wird überprüft, ob das heutige Datum nach dem Verfalldatum liegt. wenn ja, wird als nächstes...

Aus Tabelle2!B1 wird das gespeicherte Passwort ausgelesen. Ist es gleich den korrekten Passwort, wird die Routine über EndIf verlassen und die Arbeit kann fortgesetzt werden.

Ist es aber ungleich dem korrekten Passwort, also auch, wenn es z.B. leer ist, dann wird als nächstes über eine InputBox das Passwort abgefragt. Ist dies ungleich dem korrekten Passwort, wird das Workbook geschlossen.

Ist das eingegebene Passwort hingegen korrekt, wird es in Tabelle2!B1 gespeichert und die Arbeit kann fortgesetzt werden. Und um sicherzugehen, daß das Passwort nicht verloren geht, wird das Workbook nach korrekter Eingabe sofort gespeichert. Beim nächsten Öffnen der Mappe wird so das gespeicherte Passwort benutzt und ohne NAchfrage kann weitergearbeitet werden.

Die "Speichern?" Nachfrage beim Schließen nach Eingabe eines falschen Passworts wird durch "sachechanged:=false" verhindert.

Das Blatt "Tabelle2" ist in den Eigenschaften im VBA-Editor auf xlveryhidden gesetzt. Aus User-Sicht existiert es so überhaupt nicht.

Aber Dir ist klar, daß es ziemlich wenig Aufwand ist, das ganze zu Umgehen, ja? Makros nicht aktivieren beim Start ist schon das Ende des ganzen Schutzes...

Gruß, Michael


Testphase_Passwort.xls
 Beschreibung:

Download
 Dateiname:  Testphase_Passwort.xls
 Dateigröße:  27 KB
 Heruntergeladen:  18 mal

Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
usebb
Newbie
Newbie


Anmeldedatum: 05.11.2008
Beiträge: 7

BeitragVerfasst am: 07.11.2008, 09:15 Nach oben

Hallo miriki

Ich habe nur kutz die Mappe getestet und Exclamation Staune !!!

Ich glaube so ist sie wie ich es möcht .
Werde es aber heute Abend noch genauer anschaun.


mfg usebb
Benutzer-Profile anzeigenPrivate Nachricht senden
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 472
Wohnort: Kiel

BeitragVerfasst am: 07.11.2008, 11:51 Nach oben

usebb hat Folgendes geschrieben:
Ich glaube so ist sie wie ich es möcht .

Wobei mir noch einfällt, daß Du den Schutz doch noch etwas wirksamer machen könntest...

Ich schrieb ja, daß der Schutz ausgehebelt wird, wenn die Makros beim Start nicht aktiviert werden. Das wäre ein Ansatzpunkt:

Erstelle die Mappe so, daß man nur damit arbeiten kann, wenn Makros aktiviert sind. Und dafür bietet sich das xlveryhidden ebenfalls an. Du könntest alle Blätter, bis auf ein "Titelblatt" auf xlveryhidden setzen und nur dann auf sichtbar schalten, nachdem das korrekte Passwort erkannt wurde.

Wenn dann jemand die Mappe öffnet, ohne die Makros zu aktivieren, sieht er nur das Titelblatt, kann aber sonst nichts weiter machen. Mit entsprechendem Mappen-Schutz kann er dann auch nicht über den VBA-Editor die Blätter einblenden.

Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
usebb
Newbie
Newbie


Anmeldedatum: 05.11.2008
Beiträge: 7

BeitragVerfasst am: 07.11.2008, 19:32 Nach oben

Hallo Michael

Also 100% so wie ich es möchte und es geht !

Was den schutz an geht na ja ich bin kein Sptzi-. und so ist da auch nicht wirklich was zu verbergen .
Es soll nur gegen OTTO NORMAL HELFEN !

Was nun den weiteren schutz an geht den du mir da vorschlägst ist auch gut nur finde ich es wieder mal nicht wo ich das einstellen soll
>>>>>auf xlveryhidden setzen<<<<< Crying or Very sad

Aber erst mal besten Dank schon mal für deine Hilfe


mfg usebb
Benutzer-Profile anzeigenPrivate Nachricht senden
usebb
Newbie
Newbie


Anmeldedatum: 05.11.2008
Beiträge: 7

BeitragVerfasst am: 08.11.2008, 10:48 Nach oben

Hi Michael

Blatt ausblenden mit xlveryhidden ist ok .
Aber wie blende ich sie bei Aktive Makro ein?

DA BRAUCH ICH SICHER IN JEDEN BLADD EIN CODE oder ?
Benutzer-Profile anzeigenPrivate Nachricht senden
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 472
Wohnort: Kiel

BeitragVerfasst am: 10.11.2008, 08:06 Nach oben

usebb hat Folgendes geschrieben:
Blatt ausblenden mit xlveryhidden ist ok .
Aber wie blende ich sie bei Aktive Makro ein?

Du brauchst nur in dem IF-Block an der Stelle, wo "normal weiterarbeiten" angesagt ist, die ausgeblendeten Blätter wieder einblenden. Danach können die ja auch weiterhin eingeblendet bleiben, denn 1x das richtige Paßwort reicht ja.

Ok, das mit dem xlveryhidden im Eigenschafts-Fenster hast du gefunden? Wenn nicht:
Alt-F11 für den VBA-Editor
Ggf. Strg-R, um den Projekt-Explorer anzuzeigen
Im Projekt-Explorer Klick auf z.B. "Tabelle2 (Tabelle2)"
Ggf. F4, um das Eigenschafts-Fenster anzuzeigen
Die unterste Zeile "visible" steht standardmäßig auf "-1 - xlSheetVisible", dort kannst Du es auf "2 - xlSheetVeryHidden" umstellen.

Wenn Du die Mappe jetzt so abspeicherst und schließt, danach wieder neu öffnest, kannst Du ja mal in das Menü "Format - Blatt - " gehen und sehen, daß "Einblenden..." ausgegraut ist. Aus User-Sicht existiert also kein Blatt, daß eingeblendet werden kann.

Und folgende Routine blendet Beim Öffnen der Mappe grundsätzlich "Tabelle1" ein und "Tabelle2" gründlich aus:
Code:
Private Sub Workbook_Open()

    Const sh_visible = "Tabelle1"
    Const sh_hidden = "Tabelle2"

    Dim w1 As Workbook
    Dim s1 As Worksheet

    Set w1 = ThisWorkbook
    Set s1 = w1.Worksheets(sh_visible)
    s1.Visible = xlSheetVisible

    Set s1 = w1.Worksheets(sh_hidden)
    s1.Visible = xlVeryHidden

End Sub


Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge brauch dringend hilfe Mity Microsoft Excel Hilfe 0 06.01.2009, 22:47 Letzten Beitrag anzeigen
Keine neuen Beiträge Hilfe bei optischer Darstellung smart-jr Microsoft Excel Hilfe 14 06.01.2009, 07:09 Letzten Beitrag anzeigen
Keine neuen Beiträge Hilfe!! Excel öffnet automatisch sämt... Moehrchen61 Microsoft Excel Hilfe 4 03.01.2009, 00:07 Letzten Beitrag anzeigen
Keine neuen Beiträge Brauche Hilfe zur Dateneingabe chrisef77 Microsoft Excel Hilfe 1 31.12.2008, 12:28 Letzten Beitrag anzeigen
Keine neuen Beiträge Bitte um Hilfe: Datum abhängig von 2 ... Mav_Lrey Microsoft Excel Hilfe 13 29.12.2008, 09:48 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Battle-Dream | Tuning Forum | Join the YoungGeneration | krankenversicherungsvergleich | Kalorienarme Rezepte!
Versicherungsvergleich | Bürobedarf | Papier | Betten

Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de