Dateien verarbeiten: Arbeiten mit schreibgeschützten Dateien

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:

 


Sub SchreibschutzPruefen()
Dim fil As File
Dim fso As FileSystemObject
Dim geschützt As Boolean
Set fso = New FileSystemObject
Set fil = fso.GetFile("C:\Budget\Ist_Gesamt.xls")
geschützt = fil.Attributes And ReadOnly
MsgBox "Schreibgeschützt = " & geschützt
End Sub

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

Der Fachverlag für Computerwissen ist ein Unternehmensbereich der VNR Verlag für die Deutsche Wirtschaft AG
Theodor-Heuss-Str. 2-4 · D-53095 Bonn · Tel.: 02 28 - 95 50 190 · Fax: 02 28 - 36 96 001
USt.-ID: DE 812639372 · Amtsgericht Bonn, HRB 8165 · Vorstand: Helmut Graf · Vorsitzender des Aufsichtsrats: Norman Rentrop
Copyright © 2008 Fachverlag für Computerwissen. Alle Rechte vorbehalten. Webdesign, Typo3, Programmierung: SimpleThings GmbH