Beim Löschen von Dateien haben Sie schon die Eigenschaft "Force" kennen gelernt, mit der Sie das Löschen durchführen können, auch wenn ein Schreibschutz für eine Datei gesetzt ist.
Grundsätzlich aber gilt: Im Regelfall ist der Schreibschutz einer Datei aus guten Gründen gesetzt. Es kann daher sinnvoll sein, ihn in Ihren VBA-Programmen auch zu respektieren.
Dazu müssen Sie zunächst feststellen, ob eine Datei schreibgeschützt ist oder nicht. Im nächsten Schritt können Sie dann den Schreibschutz aufheben oder setzen.
Wie Sie feststellen, ob eine Datei schreibgeschützt ist
Um auf die Systemeigenschaften einer Datei zuzugreifen, verwenden Sie die Eigenschaft "Attributes". Sie steht Ihnen als Teil des Objekts "File" zur Verfügung.
Legen Sie zuerst eine Variable vom Typ "File" an und weisen Sie der Variablen über die GetFile-Methode einen Bezug auf die gewünschte Datei zu. Anschließend können Sie die Attributes-Eigenschaft direkt auslesen.
Beispiel:
Um festzustellen, ob die Datei "Ist_Gesamt.xls" im Verzeichnis "C:\Budget" einen Schreibschutz besitzt oder nicht, verwenden Sie den folgenden Programmcode:
|
Die Eigenschaften von Dateien sind binär über die Eigenschaft "Attributes" codiert. Um sie abzufragen oder zu setzen, bietet Ihnen VBA passende Konstanten an.
"ReadOnly" ist eine Konstante aus der Aufzählung "FileAttribute" der Scripting-Bibliothek.
Schreibschutz einer Datei einfach aufheben oder setzen
Zum Aufheben oder Setzen eines Schreibschutzes verwenden Sie eine ähnliche Methode wie beim Abfragen des Schreibschutzes.
Der Unterschied: Statt die binär codierten Werte von "Attributes" auszulesen, weisen Sie der Eigenschaft einfach einen neuen Wert zu, mit dem Sie den Schreibschutz setzen.
Beispiel:
Das folgende Programmbeispiel schaltet den Schreibschutz der Datei "Ist_Gesamt.xls" im Verzeichnis "C:\Budget" aus:
Sub SchreibschutzAufheben()
Dim fil As File
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Set fil = fso.GetFile("C:\Budget\Ist_Gesamt.xls")
fil.Attributes = fil.Attributes And Not ReadOnly
End Sub
Das Setzen eines Schreibschutzes erledigen Sie genau auf dem umgekehrten Weg: Ersetzen Sie einfach das "And Not ReadOnly" durch "Or ReadOnly".
Autor: Dr. Dieter Klemke