Das Archiv des Excel-Forums

Schreibschutz prüfen funktioniert nicht

nach unten


Betrifft: Schreibschutz prüfen funktioniert nicht
von: Philipp

Geschrieben am: 02.10.2019 12:19:58

Hallo Forum-Experten!
Ich habe ein kleines Problem, bei dem ich nicht weiterkomme und hoffe, dass Ihr helfen könnt.
Ich habe eine Excel-Datei, die als Datenbank fungiert, und über mehrere User über eine andere Excel-Datei mit Daten "gefüttert" wird.
Um zu vermeiden, dass die Datei im schreibgeschützten Modus aufgerufen wird und beim (automatischen) Speichern einen Fehler verursacht, habe ich eine Schleife eingebaut, die beim Öffnen der Datei prüft ob sie schreibgeschützt ist und (falls ja) den Vorgang wiederholt.
Do Until Schreibschutz = "NEIN"
Workbooks.Open Filename:="PFAD etc."
If ActiveWorkbook.ReadOnly Then
ActiveWorkbook.Close
Else
Schreibschutz = "NEIN"
End If
Loop
Da die Datei nur kurz geöffnet, Daten ergänzt, die Datei gespeichert und wieder geschlossen wird, hat es bis dato auch recht problemlos funktioniert.
Aus irgendwelchen (mir unerklärlichen) Gründen "verschluckt" sich der Code in letzter Zeit allerdings und erkennt die Datei anscheinend nicht mehr als schreibgeschützt.
Gibt es noch andere Wege zu prüfen, ob eine Datei in Benutzung ist oder hat jemand eine Erklärung für das Phänomen?
Besten Dank für Eure Zeit und Hilfe!
Viele Grüße
Philipp

Betrifft: AW: Windows Schreibschutz
von: Fennek
Geschrieben am: 02.10.2019 12:50:14
Hallo,
mit VBA kann man den Schreibschutz der Festplatte auslesen und setzen:


GetAttr ( path )    'Klammern müssen sein
The GETATTR function will return one or a combination of the following values:
VB Constant 	Value 	Explanation
vbNormal 	0 	Normal
vbReadOnly 	1 	Read-only
vbHidden 	2 	Hidden
vbSystem 	4 	System file
vbDirectory 	16 	Directory or folder
vbArchive 	32 	File has been changed since last backup
vbAlias 	64 	File name is an alias
SetAttr path, attributes
Attributes can be the following values:
VB Constant 	Value 	Explanation
vbNormal 	0 	Normal (default)
vbReadOnly 	1 	Read-only
vbHidden 	2 	Hidden
vbSystem 	4 	System file
vbArchive 	32 	File has been changed since last backup
vbAlias 	64 	File name is an alias (Macintosh only)
 _
https://www.mrexcel.com/forum/excel-questions/1034729-vba-code-run-cmd-code.html
Shell ("attrib d:\test.txt +s +h +r")
oder
Sub FileAttribute()
SetAttr "C:\test.txt", vbSystem + vbHidden + vbReadOnly
End Sub
mfg

Betrifft: AW: Windows Schreibschutz
von: Philipp

Geschrieben am: 02.10.2019 13:17:32
Hallo Fennek,
danke für die Antwort, aber bei der GetAttr-Funktion kann ich nur auslesen, ob die Datei als schreibgeschützt gespeichert ist.
Ich habe mich vielleicht unklar ausgedrückt - ich will, dass ausgelesen wird, ob die Datei zur Zeit in Benutzung und damit als schreibgeschützt geöffnet ist.
Damit soll vermieden werden, dass zwei User gleichzeitig versuchen, Daten zu hinterlegen und zu speichern.
Viele Grüße
Philipp

Betrifft: AW: Schreibschutz prüfen funktioniert nicht
von: Oberschlumpf
Geschrieben am: 02.10.2019 15:51:55
Hi Philipp,
grundsätzlich finde ich deine Idee mit Do/Loop gar nicht schlecht - wenn sie denn zu 100% funktionieren würde :-)
Meine Idee:
Was spricht denn gegen die excelinterne Dateifreigabe; d h, es können - gleichzeitig - mehrere Personen diese Datei öffnen?
Ciao
Thorsten

Betrifft: AW: Schreibschutz prüfen funktioniert nicht
von: Philipp

Geschrieben am: 02.10.2019 16:04:25
Hallo Thorsten,
danke für den Hinweis - muss dazu die Datei über OneDrive in der Cloud gespeichert sein?
Oder geht dies auch auf "normalem" Pfad?
Viele Grüße,
Philipp

Betrifft: AW: Schreibschutz prüfen funktioniert nicht
von: Oberschlumpf
Geschrieben am: 02.10.2019 17:25:14
Hi Philipp,
im Job nutzen wir gemeinsam (ich+Kollegen) eine Anwesenheitsdatei im firmeninternen Netzwerk.
Da funktioniert die Freigabe über Excel.
Ob das auch mit OneDrive geht, weiß ich nicht, da keine Erfahrung.
Aber du scheinst ja eher zu befürchten, dass es nur mit OneDrive gehen könnte :-)
Also, wie gesagt, in einem Netzwerk (nicht Internet) funktioniert das.
Wenn du nicht weißt, wie das mit der Freigabe in Excel eingestellt wird, nutze Google. Das wird sehr oft erklärt.
Ciao
Thorsten

Excel-Beispiele zum Thema "Schreibschutz prüfen funktioniert nicht"

Zellen auf Kommentar überprüfen download Bereiche bei Mehrfachauswahl prüfen download
Prüfen, ob ein Menü vorhanden ist download Eingabe auf bereits vorhanden prüfen und, wenn nein, einfügen download
Blatttyp und Arbeitsmappennamen prüfen download Bei Öffnen Standardschriftgröße prüfen und Zoom festlegen download
UserForm-TextBox-Werte auf Numeric prüfen und in Tabelle eintragen download Werte prüfen und kopieren download
Werte nach Kriterien prüfen und auf Blätter verteilen download Nummerngruppe prüfen und melden download
UserForm-Optionsfelder prüfen download Auf Doppelte prüfen, bevor Tabelleneintrag download
Nach Prüfziffer abprüfen download CheckBoxes eines vorgegebenen Bereiches prüfen download
InputBox-Eingabe auf gültige Zahl prüfen download Vorhandensein von Verzeichnissen prüfen und Ordner anlegen download
Prüfen, ob eine TextBox mit vorgegebenem Namen existiert download Zeichenfolge auf Inhalt überprüfen download
Prüfen, ob ein Name im Outlook-Adressbuch existiert download Zahlungsfrist prüfen download
Prüfen, ob Arbeitsmappe geöffnet und wenn nein, öffnen download Ausländische UStNr nach dem WDDX-Verfahren prüfen download
Bei Eingaben prüfen, ober der Wert schon in anderer Tabelle download Beim Öffnen der Arbeitsmappe auf aktuelles Datum prüfen download