Hi Master,
hier der "versprochene" Code. Wie immer ziehe ich für solche Zwecke gerne unsere VBEx32.DLL heran So auch in nachfolgendem Beispiel:
[color=#000099]Dim[/color] sFolders() [color=#000099]As[/color] _
[color=#000099]String[/color]
[color=#000099]Dim[/color] nCount [color=#000099]As[/color] _
[color=#000099]Long[/color]
[color=#000099]Dim[/color] i [color=#000099]As[/color] _
[color=#000099]Long[/color]
[color=green]' Start-Ordner
[color=#000099]Dim[/color] sPath [color=#000099]As[/color] _
[color=#000099]String[/color]
sPath = "d:\temp"
[color=green]' Start-Ordner...
Folder_SetReadOnly sPath, [color=#000099]False[/color]
[color=green]' jetzt alle Unterordner ermitteln
nCount = VBEX_FolderCount(sPath, 1)
[color=#000099]If[/color] nCount >= 0 [color=#000099]Then[/color]
[color=#000099]ReDim[/color] Preserve sFolders(nCount)
nCount = VBEX_FolderList(sPath, 1, sFolders())
[color=green]' Array durchlaufen und Schreibschutz entfernen
[color=#000099]For[/color] i = 0 [color=#000099]To[/color] nCount
Folder_SetReadOnly sPath & sFolders(i), [color=#000099]False[/color]
[color=#000099]Next[/color] i
[color=#000099]End[/color] [color=#000099]If[/color] Und hier die Funktion, die dann den Schreibschutz aller Dateien eines Ordners entfernt oder auch setzt
[color=#000099]Private[/color] [color=#000099]Sub[/color] Folder_SetReadOnly( _
[color=#000099]ByVal[/color] sPath [color=#000099]As[/color] _
[color=#000099]String[/color], _
Optional [color=#000099]ByVal[/color] bReadOnly = _
[color=#000099]False[/color])
[color=green]' Schreibschutz aller Dateien eines Ordners
[color=green]' setzen / entfernen
[color=#000099]Dim[/color] sFiles() [color=#000099]As[/color] _
[color=#000099]String[/color]
[color=#000099]Dim[/color] nCount [color=#000099]As[/color] _
[color=#000099]Long[/color]
[color=#000099]Dim[/color] i [color=#000099]As[/color] _
[color=#000099]Long[/color]
[color=#000099]Dim[/color] nBytes [color=#000099]As[/color] Currency
[color=#000099]Dim[/color] nAttr [color=#000099]As[/color] _
[color=#000099]Long[/color]
[color=green]' zunächst Schreibschutz des Ordners setzen/entfernen
SetAttr sPath, IIf(bReadOnly, vbReadOnly, vbNormal)
[color=green]' jetzt alle Dateien ermitteln
nCount = VBEX_FileCount(sPath, 0, "*.*", nBytes)
[color=#000099]If[/color] nCount >= 0 [color=#000099]Then[/color]
[color=#000099]ReDim[/color] Preserve sFiles(nCount)
nCount = VBEX_FileList(sPath, 0, "*.*", sFiles(), nBytes)
[color=green]' Array durchlaufen und Schreibschutz setzen/entfernen
[color=#000099]If[/color] Right$(sPath, 1) <> "\" _
[color=#000099]Then[/color] sPath = sPath & "\"
[color=#000099]For[/color] i = 0 [color=#000099]To[/color] nCount
nAttr = (GetAttr(sPath & sFiles(i)) [color=#000099]And[/color] _
IIf(bReadOnly, vbReadOnly, [color=#000099]Not[/color] vbReadOnly))
SetAttr sPath & sFiles(i), nAttr
[color=#000099]Next[/color] i
[color=#000099]End[/color] [color=#000099]If[/color]
[color=#000099]End[/color] [color=#000099]Sub[/color] _________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de |