Office: Bitte um hilfe bei VBA

Helfe beim Thema Bitte um hilfe bei VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; 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... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von usebb, 5. November 2008.

  1. usebb User

    Bitte um hilfe bei VBA


    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
     
  2. miriki Erfahrener User
    Ach, noch mehr Probleme hättest du ohne VBA... ;-)

    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
     
  3. usebb User
    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
     
  4. miriki Erfahrener User

    Bitte um hilfe bei VBA

    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
     
  5. usebb User
    Hallo miriki

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

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


    mfg usebb
     
  6. miriki Erfahrener User
    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
     
  7. usebb User
    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<<<<< :cry:

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


    mfg usebb
     
  8. usebb User

    Bitte um hilfe bei VBA

    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 ?
     
  9. miriki Erfahrener User
    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
     
Thema:

Bitte um hilfe bei VBA

Die Seite wird geladen...
  1. Bitte um hilfe bei VBA - Similar Threads - Bitte hilfe VBA

  2. Bitte um Hilfe für unsichtbares inhaltsverzeichnis

    in Microsoft Word Hilfe
    Bitte um Hilfe für unsichtbares inhaltsverzeichnis: Hi, vielen Dank schon mal im Voraus an alle, die sich die Zeit nehmen, mir bei meinem Problem zu helfen! Folgendes Problem habe ich: Ich möchte ein Inhaltsverzeichnis zum Navigieren im Dokument...
  3. Bitte um Hilfe bei verschachtelter Filterung über mehrere Zeilen

    in Microsoft Excel Hilfe
    Bitte um Hilfe bei verschachtelter Filterung über mehrere Zeilen: Hallo, Ich stehe vor einer Aufgabe die ich nicht zu lösen weiss und wäre für eure Hilfe sehr dankbar. Es geht darum eine Excel Tabelle zu filtern, aber (ich nenne es mal so) verschachtelt über...
  4. EXCEL Berechnung bitte um Hilfe

    in Microsoft Excel Hilfe
    EXCEL Berechnung bitte um Hilfe: Hallo, wer kann mir helfen. Ich habe unterschiedliche 16 Anfangstermine und unterschiedliche 25 Forderungsbeträge und 2 Teilzahlungen im Verlauf der 16 Anfangstermine erhalten sowie einen festen...
  5. Bitte um hilfe bei Outlook 2010

    in Microsoft Outlook Hilfe
    Bitte um hilfe bei Outlook 2010: Bitte um hilfe bei Outlook 2010. Ich habe seit ein paar Monaten folgendes Problem: In meine Outlook popt ständig folgende Fenster auf (Siehe unten). Das ist sehr nervig und mein Outlook...
  6. Bitte um Hilfe: VBA Jahr und Monat zu datum verbinden

    in Microsoft Excel Hilfe
    Bitte um Hilfe: VBA Jahr und Monat zu datum verbinden: Hallo, ich bin völliger Neuling, und habe follgendes Problem: Will in VBA aus einem Datum nur den Monat und das Jahr in ein anderes Datum übernehmen. so geht es nicht: y=year(date1)...
  7. Makro? VBA? Sortieren geht nicht, brauche bitte Hilfe bei der Lösung

    in Microsoft Excel Hilfe
    Makro? VBA? Sortieren geht nicht, brauche bitte Hilfe bei der Lösung: Einen wunderschönen "Guten Tag", nachdem letzte Saison mein Problem ungelöst blieb muss es dieses Jahr was werden ... Ich habe eine Excel 2003 Tabelle mit mehreren, identischen...
  8. access und vba - bitte um hilfe bei der erstellung des codes

    in Microsoft Access Hilfe
    access und vba - bitte um hilfe bei der erstellung des codes: hi, ich hab ein problem wo ich mit meinen unterlagen (fern-trainingskurs) nicht weiterkomme, mich die zeit aber schon drängt. gegeben ist eine datenbank mit den dazugehörigen formularen, die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden