Microsoft Excel

Herbers Excel/VBA-Archiv

Schreibschutz prüfen funktioniert nicht


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


Beiträge aus dem Excel-Forum zum Thema "Schreibschutz prüfen funktioniert nicht"