Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
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
Inhaltsverzeichnis

VBA Password

VBA Password
serge
Hallo Leute
ich habe eine Datei mit einigen Tabellenblätter und auf jede Blatt Autoformen mit VBa's versehen.
ich habe davon viele mit selbe Password belegt, immer dem selben: "mypass".
Jetzt möchte ich ein Makro starten das mir alle Passwörter auf dem ganzen Projekt ändert.
ich habe folgende Arten Eingaben:
myInput = "mypass"
Password:="mypass"

Ein Makro aufzeichnen geht nicht!
Wer kann mir weiterhelfen?
Im Voraus danke!
Serge

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Password
16.09.2010 10:35:59
EvilRik
Hallo Serge,
? Du hast alle Autoformen (was meinst du damit? Pfeile, Rechtecke,...) mit Passwort belegt? Wie geht das?
Oder hast du die Tabellenblätter mit Passwort geschützt?
Grundsätzlich kannst du auch im VBA Editor STRG+F drücken, hier dein Passwort z.B. "mypass" eingeben
Ersetzen klicken und ändern durch z.B. "MyPASS" ersetzen.
Makro Text selbst durch ein Makro zu ersetzen ist kompliziert (siehe Beitrag gestern. Such mal).
Gruß Henrik
AW: VBA Password
16.09.2010 11:02:09
serge
Hallo Henrik
ich habe Pfeile, Rechtecke,... Makros zugewiesen vorin mein Passswort vorkommt!("mypass")
In diesen Makros möchte ich nun wieder mit einem Makros oder irgend einer Prozedur... dieses Wort ändern.( zu "deinpass",z.B)
Das mit dem VBA Editor STRG+F(H) drücken kennt ich, aber die Anwender meiner Datei sind mit VBA nicht vertraut, daher möchte ich es per Makro machen lassen.
Zum Beispiel mit Abfrage von alten und danach (oder gleichzeitig vom neuen) Password .
Wenn Du mit"(siehe Beitrag gestern. Such mal)" den Beitrag von Jürgen meinst, meine VBA kenntnisse sind nicht so gut dass ich damit was anfangen kann!
Hilfe brauch ich doch dazu!
Serge
Anzeige
AW: VBA Password
16.09.2010 11:07:24
serge
Hallo Henrik
ich habe Pfeile, Rechtecke,... Makros zugewiesen vorin mein Passswort vorkommt!("mypass")
In diesen Makros möchte ich nun wieder mit einem Makros oder irgend einer Prozedur... dieses Wort ändern.( zu "deinpass",z.B)
Das mit dem VBA Editor STRG+F(H) drücken kennt ich, aber die Anwender meiner Datei sind mit VBA nicht vertraut, daher möchte ich es per Makro machen lassen.
Zum Beispiel mit Abfrage von alten und danach (oder gleichzeitig vom neuen) Password .
Wenn Du mit"(siehe Beitrag gestern. Such mal)" den Beitrag von Jürgen meinst, meine VBA kenntnisse sind nicht so gut dass ich damit was anfangen kann!
Hilfe brauch ich doch dazu!
Serge
Anzeige
AW: VBA Password
16.09.2010 12:45:26
Nepumuk
Hallo Serge,
schau mal hier: http://www.office-loesung.de/ftopic231345_0_0_asc.php
Du musst aber vor dem Austausch auch alle Tabellen der Mappen mit dem alten Kennwort entschützen !!!
Ich empfehle dir aber in Zukunft das Kennwort als öffentliche Konstante in eimem Modul zu hinterlegen. Das macht das auswechseln leichter. Wenn du das Kennwort öfters wechselt, dann 2 Konstanten. Eine Password_Old eine Password_New. Und du machst dir eine einzige Routine welche den Kennwortschutz aufhebt. Die versucht es erst mit dem alten Kennwort und wenn das eine Fehler erzeugt dann mit dem neuen Kennwort. Wenn du dann das Kennwort änderst, dann musst du nur zwei Zeilen austauschen.
Gruß
Nepumuk
Anzeige
AW: VBA Password
17.09.2010 13:00:51
serge
Hallo Nepumuk
Danke für deine Hilfe.
Ich war ausser Haus und konnte nicht voher ausprobieren!
Ich habe versucht dein Vorschlag anzuwenden.
Es bleibt bei "For Each objComponent In Workbooks" stehen und da kommt die Fehlermeldung:
Laufzeitfehler'1004'
Die Methode 'VBProject' für das Objekt'_Woorkbook' ist fehlgeschlagen.

Ich weiss nicht ob ich alles richtig verstanden habe!
Hast Du vielleicht eine Beispieldatei an der ich den Ablauf zu deinem Vorschlag verfolgen kann?
Danke
Serge
AW: VBA Password
17.09.2010 15:13:32
Nepumuk
Hallo Serge,
den Fehler kann ich nicht nachvollziehen.
Ich hab dir zwei Mappen gezippt. Textmappe.xls in welcher etwas geändert werden soll und Update.xls welche die Änderung vornimmt. Beide Mappen öffnen und prcUpdate3 laufen lassen.
https://www.herber.de/bbs/user/71586.zip
Gruß
Nepumuk
Anzeige
AW: VBA Password
17.09.2010 16:27:40
serge
Hallo Nepumuk
der Fehler kam wieder, doch ich habe herausbekommen dass ich die Sicherheit auf Zugriff auf Visual Basic-Projekt vertrauen stellen muss.
Jetzt klappt es!
Ich sollte jetzt nur noch eine Abfrage starten können:
Password atl?
Password neu?
Passwort neu (zur Sicherheit das kein Missverständnis im neuem auftaucht) und danachdein "prcUpdate3 "!
(in Form von Formular oder MsgBox...)
Danke Serge
AW: VBA Password
17.09.2010 16:51:33
Nepumuk
Hallo Serge,
kennen den deine User das Kennwort und wenn sie es kennen warum dann austauschen? Wie soll überprüft werden ob das alte Kennwort richtig eingegeben wurde?
Gruß
Nepumuk
Anzeige
AW: VBA Password
17.09.2010 17:23:04
serge
Nepumuk
die Datei wird 3 Personen benutzt, welche sie für weitere Benutzer immer wieder anpassen sollen. Damit jeder der ersten 3 seine Datei für sich sichern kann will diese Prozedur einbauen!
Sollte einer der 3 das Gefühl bekommen eine Unterbenutzer hat das Passwort geknackt, soll er es ändern können ohne ins VBA greifen zu müssen!
Serge
AW: VBA Password
17.09.2010 17:34:40
Nepumuk
Hallo Serge,
aber ein "Unterbenutzer" braucht doch nichts knacken. Der muss doch nur den VBA-Editor aufmnachen und kann das Kennword direkt sehen.
Sollte das Projekt mit einem Kennwort geschützt sein, dann kannst du das Update-Makro sowieso vergessen.
Ich hätte in dem Fall aber noch eine Idee für dich, dazu müsstest du allerdings den Code in den Mappen etwas anpassen. Denn da kommt das Kennwort nicht mehr aus dem Code sondern ist in einem unsichtbaren Namen gespeichert. Damit spielt es dann auch keine Rolle mehr ob das Projekt geschützt ist oder nicht.
Gruß
Nepumuk
Anzeige
AW: VBA Password
17.09.2010 18:08:36
serge
Nepumuk
Wenn ich dich richtig verstanden habe soll ich in meinem Makro das "mypass" durch eine Zelleadresse ersetzen? Wie sieht dieser Befehl aus? Ich habe in Tabelle1 in d1 mypass eingegeben und dieser Zelle den Namen Pass eingefügt!!
Serge
Sub tabelle2()
Dim myInput As String
myInput = InputBox("Password eingeben!")
If Not myInput = "mypass" Then
MsgBox "falsches Password!"
Exit Sub
End If
ActiveWorkbook.Unprotect Password:="mypass"
Sheets("Tabelle2").Visible = True
Sheets("Tabelle2").Select
End 

Sub

Anzeige
AW: VBA Password
17.09.2010 19:04:37
Nepumuk
Hallo Serge,
ich denke, du hast mich nicht verstanden. Darum habe ich dir mal ein Beispiel gemacht:
Option Explicit

Private Const PASS_WORD = "Password"

Public Sub Change_Password()
    
    Dim objName As Name, objSheet As Object
    Dim blnFound As Boolean
    Dim strOldPassword As String, strConfirmation As String
    Dim strInput1 As String, strInput2 As String
    Dim intCounter As Integer
    
    'Altes Kennwort suchen
    For Each objName In ThisWorkbook.Names
        If objName.Name = PASS_WORD Then
            blnFound = True
            Exit For
        End If
    Next
    
    'Kennwort gefunden User muss das alte Kennwort bestätigen
    If blnFound Then
        strOldPassword = Split(ThisWorkbook.Names(PASS_WORD).Value, Chr$(34))(1)
        Do
            intCounter = intCounter + 1
            strConfirmation = InputBox("Bitte altes Kennwort eingeben.", "Eingabe")
            If StrPtr(strConfirmation) = 0 Then Exit Sub
            If strConfirmation = strOldPassword Then
                Exit Do
            Else
                If intCounter = 3 Then Exit Sub
                MsgBox "Falsche Eingabe. Noch " & CStr(3 - intCounter) & " Versuch" & _
                    IIf(intCounter = 1, "e", "") & ".", vbExclamation, "Hinweis"
            End If
        Loop
    End If
    
    'Neues Kennwort eingeben
    Do
        strInput1 = InputBox("Bitte neues Kennwort eingeben.", "Eingabe")
        If StrPtr(strInput1) = 0 Then Exit Sub
        If strInput1 <> vbNullString Then
            If Len(strInput1) <= 15 Then
                If Len(strInput1) >= 8 Then
                    If strInput1 <> strOldPassword Then
                        Exit Do
                    Else
                        MsgBox "Das alte und das neue Kennwort ist identisch.", vbExclamation, "Hinweis"
                    End If
                Else
                    MsgBox "Bitte mindestens 8 Zeichen eingeben.", vbExclamation, "Hinweis"
                End If
            Else
                MsgBox "Bitte maximal 15 Zeichen eingeben.", vbExclamation, "Hinweis"
            End If
        Else
            MsgBox "Bitte geben Sie das neue Kennwort ein.", vbExclamation, "Hinweis"
        End If
    Loop
    
    'Neues Kennwort bestätigen
    Do
        strInput2 = InputBox("Bitte neues Kennwort wierderholen.", "Eingabe")
        If StrPtr(strInput2) = 0 Then Exit Sub
        If strInput1 = strInput2 Then
            Exit Do
        Else
            MsgBox "Die Wiederholung entspricht nicht der ersten Eingabe.", vbExclamation, "Hinweis"
        End If
    Loop
    
    'Blattschutz für alle Sheets aufheben
    If blnFound Then
        For Each objSheet In ThisWorkbook.Sheets
            Call Unprotect_Sheet(objSheet)
        Next
    End If
    
    'Neues Kennwort speichern
    ThisWorkbook.Names.Add Name:=PASS_WORD, RefersTo:=strInput2, Visible:=False
    
    'Blattschutz für alle Sheets neu setzen
    For Each objSheet In ThisWorkbook.Sheets
        Call Protect_Sheet(objSheet)
    Next
    
    'Mappe speichern
    ThisWorkbook.Save
    
    'Objekte freigeben
    Set objName = Nothing
    Set objSheet = Nothing
    
End Sub

Public Sub Protect_Sheet(objSheet As Object)
    objSheet.Protect Password:=Split(ThisWorkbook.Names(PASS_WORD).Value, Chr$(34))(1)
End Sub

Public Sub Unprotect_Sheet(objSheet As Object)
    objSheet.Unprotect Password:=Split(ThisWorkbook.Names(PASS_WORD).Value, Chr$(34))(1)
End Sub

Wenn du das ganze zum ersten mal benutzt, musst du den Schutz für alle Tabellen vorher manuell aufheben !!!
Dann musst du in den Mappen überall wo eine Tabelle geschützt oder der Schutz aufgehoben wird Befehle wie:
ActiveSheet.UnProtect "DeinKennwort" bzw. ActiveSheet.Protect "DeinKennwort"
durch den Aufruf:
Call Unprotect_Sheet(ActiveSheet) bzw. Call Protect_Sheet(ActiveSheet)
ersetzen.
Dann benötigst du noch einen Button in einer Tabelle oder einen Menübutton mit welcher der User die Prozedur "Change_Password" aufrufen kann.
Gruß
Nepumuk
Anzeige
AW: VBA Password
18.09.2010 10:40:20
serge
Hallo Nepumuk
Danke für deine Arbeit!
Ich habe es auprobiert aber es bleibt beim :
'Neues Kennwort speichern
ThisWorkbook.Names.Add Name:=PASS_WORD, RefersTo:=strInput2, Visible:=False
hängen mit der Meldung:
Laufzeitfeheler 1004
Anwendung oder Objektdefinierter Fehler

Serge
AW: VBA Password
18.09.2010 11:00:29
Nepumuk
Hallo Serge,
ich habe es mit Excel 2003 und 2007 getestet. Kein Problem. Kannst du die Mappe hochladen in der es zum Fehler kommt? Die enthaltenen Daten kannst du alle löschen, auch allen anderen Code.
Gruß
Nepumuk
AW: VBA Password
18.09.2010 11:25:29
serge
Hallo Nepumuk
ich habe meine Datei zu erleichtert und gezipt!
Ich hoffe das es noch representativ ist
https://www.herber.de/bbs/user/71593.zip
Gruss Serge
Anzeige
AW: VBA Password
18.09.2010 14:49:18
Nepumuk
Hallo Serge,
hättest du alle Zeilen meines Codes kopiert wäre es zu keinem Fehler gekommen. Das du Option Explicit nicht kopierst wäre ja noch verkraftbar, aber wenn du auch noch die Konstante:
Private Const PASS_WORD = "Password"
weg lässt führt das unweigerlich zu einem Fehler. Denkst du ich hab die zum Spass deklariert? Hättest du Option Explicit nicht weg gelassen, hätte dich der Debugger entsprechend angemeckert.
Gruß
Nepumuk
Ouf...es geigt!
18.09.2010 16:00:53
serge
Hallo Nepumuk
ich glaub ich spinne, ich habe dein Makro mehrmals kopiert und neu eingefügt und immer wieder ohne die ersten zwei Zeilen.
Frage mich nicht warum! Manchmal ist man verbohrt!
Aber jetzt geht es wie geschmiert.
Ich danke Dir für deine Mühe und deine Geduld
Und jetzt geht es in den gemütlicheren Teil des Wochenende, ins "Dorffest".
Excel sol Excel bleiben!
Gruss aus dem sonnigen Elsaß.
Serge"

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige