Betrifft: Schreibschutz prüfen funktioniert nicht
von: Philipp
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
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
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