Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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

Datei - Schreibschutz aufheben und wieder setzen

Datei - Schreibschutz aufheben und wieder setzen
18.07.2014 13:58:52
Andreas
Hallo Excelprofis,
Über eine Schaltfläche werden alle Zeilen eines Bereiches eingeblendet und alle in Spalte A leeren Zeilen wieder ausgeblendet. Dies hat den Hintergrund, dass die Tabelle Verknüpfungen zu anderen Mappen enthält. Wenn in den Ursprungsmappen Zeilen gelöscht oder hinzugeügt werden, kann man sich schnell einen Überblick verschaffen.
Zum Schluß wird die Datei noch gespeichert.
Das funktioniert auch super.
Aus Gründen, auf die ich hier nicht weiter eingehen will, macht es sich erforderlich die Datei schreibgeschützt zu machen (also unter Datei-Eigenschaften - Schreibgeschützt).
Geht es, dass der Schreibschutz vor ausführen dieses Makros entfernt und nach dem speichern wieder gesetzt wird? So wie ich es probiert habe gehts wohl nicht (siehe auskommentierte Zeilen).
Option Private Module
Sub EinAusblendenLangsam()
Dim zelle As Range
Dim bereich As Range
Set bereich = ActiveSheet.Range("A8:A397")
ActiveSheet.Unprotect Password:="Passwort"
Application.ScreenUpdating = False
Application.EnableEvents = False
'ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=True
bereich.EntireRow.Hidden = True
For Each zelle In bereich
If zelle  "" Then
'Call FilternBereich
zelle.EntireRow.Hidden = False
End If
Next
ActiveSheet.Protect Password:="Passwort"
ActiveWorkbook.Save
'ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly, notify:=True
Application.ScreenUpdating = True
Application.EnableEvents = True
Range("A6").Select
End Sub
Danke fürs lesen und die Hilfe!
mfg, Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei - Schreibschutz aufheben und wieder setzen
18.07.2014 14:31:36
fcs
Hallo Andreas,
wenn die Datei unter dem gleichen Namen (Pfad+Dateiname!!) wieder gespeichert werden soll, dann muss schon beim Öffnen der Datei das Kennwort zum Ändern/Schreiben angegeben werden.
Falls die Datei per Makro von einer anderen Datei aus geöffnet wird, dann kann man das entsprechende Kennwort mit übergeben.
Dann sollte man das Öffnen-Makro aber so konfigurieren, dass:
- Die Datei mit Schreibkennwort geöffnet wird
- Das Makro ausführt, wenn die Datei nicht schreibgeschützt ist
- Die Datei gespeichert und geschlossen wird
- Die Datei schreibgeschützt geöffnet wird, ohne das das Makro ausgeführt wird.
Gruß
Franz

Anzeige
AW: Datei - Schreibschutz aufheben und wieder setzen
18.07.2014 14:43:32
Andreas
Hallo Franz,
Danke für die Antwort. Ich glaube, ich habe mich nicht ganz verständlich ausgedrückt. Ich meine nicht den Arbeitsmappenschutz oder Blattschutz, sondern die Dateieigenschaft "Schreibgeschützt".
Ich stelle die Datei unter anderem mit folgenden Code auf "nur lesen" und möchte die Datei aber dennoch mit oben genannter Schaltfläche (aber nur mit dieser) speichern und dann wieder auf "nur lesen" stellen. Ich habe noch ein anderes Makro das die Speicherabfrage vor dem schließen der Mappe verhindert, wenn die Mappe "Schreibgeschützt" ist.
Option Explicit
Private Sub Workbook_Open()
If IsDate(Worksheets("Übersicht").Range("J1")) Then
If Month(Worksheets("Übersicht").Range("J1"))  Month(Date) And Worksheets("Übersicht")  _
_
.Range("J1")  "" Then
Meldung
End If
Else
Meldung
End If
On Error Resume Next
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly, notify:=True
On Error GoTo 0
End Sub
mfg, Andreas

Anzeige
AW: Datei - Schreibschutz aufheben und wieder setzen
18.07.2014 15:07:17
Daniel
Hi
das Aufheben des Schreibschutzes mit:
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=True
bewirkt, dass die Datei neu gelesen wird (könnte ja sein, dass zwischenzeitlich jemand anderes die Datei ohne Schreibschutz geöffnet und verändert hat).
Damit stoppt nach dieser Befehlszeile jegliche Makroaktivität!
der Workaround ist folgendes Vorgehen:
1. Schreibe 2 Makros.
Das erste endet mit dem Aufheben des Schreibschutzes und enthält alle Befehle, die davor ausgeführt werden müssen
Das zweite enthält alle Makors, die danach ausgeführt werden sollen
2. Starte das Makro2 aus dem ersten heraus mit dem Befehl: Application.Ontime
den Merker für das Ausführen eines über Application.Ontime gestarteten Makros setzt sich Excel in der Excelapplication selbst und nicht in der Datei und ist daher in der Lage, das Makro auszuführen wenn die Datei zwischenzeitlich geschlossen wurde (sie wird dann wieder geöffnet):
Sub Makro1()
Application.Ontime Now, Makro2
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=True
End Sub
Sub Makro2()
hier dann der weitere Code
End Sub
Gruß Daniel

Anzeige
AW: Datei - Schreibschutz aufheben und wieder setzen
18.07.2014 15:31:43
Andreas
Hallo Daniel,
Danke für die Hilfe! Habe es jetzt so, erscheint aber eine Fehlermeldung:
Fehler beim Kombilieren: Function oder Variable erwartet.
"Wenn ich "Application.OnTime Now, EinAusblendenLangsam" auskommentiere, funktioniert das entfernen des Schreibschutzes ohne Meldung."

Sub Schreib_Lesestatus_Ändern()
On Error Resume Next
Application.OnTime Now, EinAusblendenLangsam
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=True
On Error GoTo 0
End Sub


Sub EinAusblendenLangsam()
Dim zelle As Range
Dim bereich As Range
Set bereich = ActiveSheet.Range("A8:A397")
ActiveSheet.Unprotect Password:=""
'Bildschirmflackern ausschalten, Trigger ausschalten
Application.ScreenUpdating = False
Application.EnableEvents = False
'ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=True
'alle Zeilen einblenden
bereich.EntireRow.Hidden = True
'jede Zeile prüfen
For Each zelle In bereich
'wenn Zelleninhalt null, dann diese Zeile ausblenden
If zelle  "" Then
'Call FilternBereich
zelle.EntireRow.Hidden = False
End If
Next
ActiveSheet.Protect Password:=""
ActiveWorkbook.Save
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly, notify:=True
Application.ScreenUpdating = True
Application.EnableEvents = True
Range("A6").Select
End Sub
Danke für die Mühe!
mfg, Andreas

Anzeige
AW: Datei - Schreibschutz aufheben und wieder setzen
18.07.2014 15:48:47
Daniel
Hi
bei Application.OnTime wird der der Name des aufgerufenen Makros in Anführungszeichen gesetzt (ähnlich wie bei Application.Run)
du solltest, wenn du hier einen neuen Befehl kennen lernst, immer auch mal parallel in der Hilfe schauen, was die dazu zu sagen hat.
Hier im Forum schreibt man doch nicht immer alles ganz so genau hin (ausserdem stehts ja in der Hilfe)
Gruß Daniel

AW: Datei - Schreibschutz aufheben und wieder setzen
18.07.2014 15:49:38
fcs
Hallo Andreas,
der Name des Makros bei OnTime muss in Anführungszeichen gesetzt werden oder eine Variable sein. Evtl. auch noch etwas Wartezeit zugeben.
Allerdings hab ich noch nie getestet, ob man so tatsächlich vorübergehend den Schreibschutz deaktivieren kann.
Bei meiner vorherigen Anwort ging es schon um das Kennwort beim Speichern/Öffnen der Datei
Gruß
Franz
Sub Schreib_Lesestatus_Ändern()
On Error Resume Next
Application.OnTime Now + TimeSerial(0,0,1), "EinAusblendenLangsam"
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=True
On Error GoTo 0
End Sub

Anzeige
geht wohl nicht so richtig
18.07.2014 16:19:00
Andreas
Hallo Ihr beiden,
Danke für die Hilfe. Schreibschutz entfernen funktioniert genau 1mal. Wenn ich mehrfach auf die Schaltfläche klicke kommen erneut Meldungen, dass die Datei schon exixtiert. Ich denke mal ich werde es anders lösen.
Ein schönes WE.
mfg, Andreas

AW: geht wohl nicht so richtig
18.07.2014 16:23:58
Daniel
Das ist keine Fehlermeldung, sondern eine normale Meldung von Excel, weil Excel vor aktivierung des Schreibschutzes die Datei nochmal speichern will und sie schon existiert.
solche Meldungen kannst du mit Application.DisplayAlerts = False unterdrücken (dann wird die Option ausgeführt, die standardmäßig eingestellt ist).
Gruß Daniel

Anzeige
Jetzt funktionierts. Danke! schönes WE! owT.
18.07.2014 16:35:13
Andreas
.

26 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige