Anzeige

Am Puls von Microsoft

Anzeige

Office Mappe über VBA mit Passwort zum Bearbeiten freigeben

Josn

kennt sich schon aus
Hallo Leute

Ich bin jetzt schon 2 Tage am rumprobieren, aber ich bin einfach nicht zufrieden mit dem aktuellen Stand :(

Folgendes Problem liegt vor:
Ich hab ne Excel-2007-Datei einer Lagertabelle und in der Arbeitsmappe liegen die Blätter "Tabelle1", "Tabelle2", "Hallen" und "Anlagen".

Nun hab ich an folgenden Programmablauf gedacht, der über VBA programmiert werden könnte:
1. Excel-Datei öffnen; komplette Arbeitsmappe ist erstmal geschützt
2. es erscheint die "Tabelle1" und gleichzeitig ein kleines Eingabefenster
3. In diesem Eingabefenster soll ich auswählen können: Durch Eingabe eines Passworts soll der Blatt- und Schreibschutz freigegeben werden und ich kann dann die gesamte Mappe bearbeiten. Falls ich kein PW hab, soll ich auf den Button "Mappe nur besichtigen" klicken können und anschließend die Mappe nur anschauen, nicht aber bearbeiten können!

Ich selbst bin leider noch kein VBA-Profi und kann mich deswegen nur an euch wenden - hoffentlich hat jemand ne Idee (y)

Wie kann ich das jetzt genau programmieren?

Danke,
Grüße

Josn
 
Anzeige
Hallo Josn:),

ot:
da kann ich Dir, denke ich, helfen, aber erst heute abend (dauert jetzt zu lang, bin noch am Arbeiten:D); ich gebe Dir dann hier den Code durch, bis nachher:).


So, jetzt, ja:D.

Also: unter "Diese Arbeitsmappe" legst Du diesen Code an
Code:
Option Explicit

Private Sub Workbook_Open()
Dim Blatt As Worksheet
For Each Blatt In ActiveWorkbook.Worksheets
Blatt.Protect "Passwort"
Next Blatt
   
End Sub

Unter Tabelle1 diesen Code
Code:
Option Explicit


Private Sub CommandButton1_Click()
Dim mypwdSheet As String
Dim ws As Object

mypwdSheet = InputBox$("Bitte Passwort eingeben:", "PW eingeben")
If StrPtr(mypwdSheet) = 0 Then
Exit Sub
Else

End If

For Each ws In ActiveWorkbook.Sheets
ws.Unprotect Password:=mypwdSheet
Next
End Sub

Das Passwort heißt im ersten Code Passwort, das musste halt anpassen.

In Mappe 1 legste halt n CommandButton an (bei mir heißt der: "Ich bin der Chef":D, alle anderen dürfen nur lesen und drucken:ROFLMAO:).

Anbei hänge ich mal n Beispiel dran.

Wichtig ist, dass Du den VisualBasic-Zugriff mit nem Passwort absicherst, denn sonst kann ja jeder Dein Passwort rauslesen:D.

Falls es noch Fragen gibt, kannste ja noch nachfragen:)
 

Anhänge

  • Mappe1.zip
    18,7 KB · Aufrufe: 308
Zuletzt bearbeitet:
Na das wäre ja super :D

Danke schonmal, bis heut Abend :)
 
Zuletzt bearbeitet von einem Moderator:
Danke Marco :)

Dein Proggi hat geholfen :D, da bin ich jetz super happy!
Habs mir noch ein bisschen angepasst und nun ist es fertig!

Hast echt TOP gemacht, Danke dafür!!! (y)

Grüße
Josn

So, soweit alles gut.

Wenn ich jetzt das PW falsch eingebe, erscheint der Laufzeitfehler und der schreibschutz bleibt drin. Wie bekomm ich jetzt die Meldung mit dem Laufzeitfehler weg?
Ich sollte praktisch eine Meldung bekommen, dass ich das PW falsch eingegeben hab und somit der Schreibschutz noch drin bleibt.

Könnte ich dann auch ein Feld programmieren, das mir anzeigt, ob aktuell der Schreibschutz drin ist oder nicht?

Gruß
Josn
 
Zuletzt bearbeitet von einem Moderator:
Hey Josn:),

ich hab den Code mal geschwind in der Mittagspause angepasst.

Setze den unter Tabelle 1 ein
Code:
Option Explicit


Private Sub CommandButton1_Click()
Dim mypwdSheet As String
Dim ws As Object
Dim Antwort As Integer
On Error GoTo Hell

mypwdSheet = InputBox$("Bitte Passwort eingeben:", "PW eingeben")

If StrPtr(mypwdSheet) = 0 Then
Exit Sub

Hell:
  Antwort = MsgBox("Falsches Passwort!! Erneut versuchen?", vbYesNo, "")
  If Antwort = vbYes Then Call CommandButton1_Click
  
  Exit Sub
  
End If

For Each ws In ActiveWorkbook.Sheets
ws.Unprotect Password:=mypwdSheet
Next

End Sub

Zudem, kannste den unter Diese Arbeitsmappe, den Code gegen diesen tauschen, dann wird beim Datei-Öffnen hier die erste Tabelle angezeigt (die Zahl in Klammer ggf. umändern, je nachdem, wo der Button ist).
Code:
Option Explicit

Private Sub Workbook_Open()
Dim Blatt As Worksheet
For Each Blatt In ActiveWorkbook.Worksheets
Blatt.Protect "Passwort"
Next Blatt
  
Worksheets(1).Activate
  
End Sub

Viel Spaß:).
 
Anzeige
Oben