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

Schreibschutz attribut VBA

Schreibschutz attribut VBA
andreas
Hallo zusammen,
ich habe eine Tabelle mit Attribut Schreibschutz gesetzt. Das darum weil die Anwendung für Berechnungen dient und nicht überschrieben wird und werden darf.
Nach einer bestimmten Anzahl Tagen muss ein Passwort eingegeben werden. Und genau nur einmal hier soll das Attribut Schreibschutz aufgehoben werden, die Tabelle gespeichert und das Attribut Schreibschutz wieder gesetzt werden.
Habe eigentlich alles im Griff, nur weiss ich nicht wie ich den Schreischutz aufheben und wieder setzten kann!!
Private Sub CommandButton1_Click()
Unload Me
Sheets("Passwort").Visible = True
Sheets("Passwort").Select
If TextBox1.Value = Range("b1").Value Then
MsgBox ("Passwort ist korrekt")
Range("B1").Select
Selection.Copy
Range("B2").Select
ActiveSheet.Paste
Sheets("Berechnung").Select
Range("A2").Select
Sheets("Passwort").Visible = False
ActiveWorkbook.Save
Else: MsgBox ("Passwort ist falsch, Tabelle wird geschlossen")
ActiveWorkbook.Close savechanges:=False
End If
End Sub
Bin für jede Hilfe dankbar
Gruß Andreas

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Schreibschutz attribut VBA
04.01.2012 16:08:53
fcs
Hallo Andreas,
sollte mit folgenden ANpassungen/Ergänzungen funktionieren.
Falls das Tabellenblatt "Passwort" mit Kennwort geschützt werden soll, dann muss dieses als Parameter für die Unprotect und/oder Protect-Anweisung im Code fest vorgeben oder per Inputbox eingegeben werden.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim strPW As String
With Sheets("Passwort")
If TextBox1.Value = .Range("b1").Value Then
strPW = .Range("b1")
.Visible = xlSheetVisible
.Unprotect
.Select
MsgBox ("Passwort ist korrekt")
.Range("B1").Copy .Range("B2")
.Protect
Sheets("Berechnung").Select
Range("A2").Select
.Visible = xlSheetVeryHidden
ActiveWorkbook.Save
Unload Me
Else
Unload Me
MsgBox ("Passwort ist falsch, Tabelle wird geschlossen")
ActiveWorkbook.Close savechanges:=False
End If
End With
End Sub

Anzeige
AW: Schreibschutz attribut VBA
04.01.2012 16:38:49
andreas
Hallo Franz,
es geht hier nicht um den Passwortschutz im Tabellenblatt, mit Protect oder Unprotect. Es geht um den Schreibschutz als Attribut der im Explorer unter Eigenschaften gesetzt werden kann.
Und den will ich aufheben um das eingegebene Passwort im Tabellenblatt zu speichern. Denn das ist eigentlich das einzige mal dass die Tabelle vom Anwender mit neueingaben gespeichert wird.
Vielleicht hast du dazu eine Idee.
Danke Andreas
AW: Schreibschutz attribut VBA
04.01.2012 17:06:21
fcs
Hallo Andreas,
dass Du das Dateiattribut "Schreibgeschützt" ändern möchtest hättest du in deiner Frage schon klarer schreiben können.
Nach meiner Einschätzung wird es schwierig, bei einer in Excel schreibgeschützt geöffneten Datei das Dateiattribut "Schreibschutz" zu ändern, da hier in die Dateiverwaltung des Betriebssystems eingegriffen werden muss.
Da kann ich nicht weiter helfen. Ich lass die Frage mal offen.
Gruß
Franz
Anzeige
AW: Schreibschutz attribut VBA
05.01.2012 15:29:50
Heiko
Moin Andreas,
hier mal ein Beispiel wie es gehen könnte.
Private Sub CommandButton1_Click()
Dim strPfad As String, strDatName As String
Dim fs, f
strPfad = ThisWorkbook.Path & "\SchS2.xlsm"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(fs.GetFileName(strPfad))
' Schreibschutz wenn vorhanden aufheben!
If f.Attributes And 1 Then
MsgBox "Schreibschutz wird aufgehoben!", vbInformation
f.Attributes = f.Attributes - 1
End If
Set f = Nothing
Set fs = Nothing
MsgBox "Nun ist der Schreibschutz aufgehoben!", vbInformation
Workbooks.Open strPfad
strDatName = ActiveWorkbook.Name
Workbooks(strDatName).Save
Workbooks(strDatName).Close
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(fs.GetFileName(strPfad))
' Schreibschutz wieder setzen!
If f.Attributes And 1 Then
MsgBox "Schreibschutz ist schon gesetzt!", vbInformation
Else
MsgBox "Schreibschutz wird gesetzt!", vbInformation
f.Attributes = f.Attributes + 1
End If
Set f = Nothing
Set fs = Nothing
End Sub

Gruß Heiko
Anzeige
AW: Schreibschutz attribut VBA
05.01.2012 19:43:33
fcs
Hallo Andreas,
ich hab Heiko's Ansatz mal getestet und in modifizierter Form umgesetzt.
Der einzig gangbare Weg ist, die Datei temporär unter einem neuen Namen und danach wieder unter dem alten Namen zu speichern.
Hier eine Beispiel-Datei
https://www.herber.de/bbs/user/78238.xlsm
https://www.herber.de/bbs/user/78239.xls
Das Tabellenblatt "Passwort" muss du ggf. über den VBA-Editor einblenden indem du die Eigenschaft "Visible" entsprechend änderst.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige