athestreet
Gebruiker
- Lid geworden
- 13 nov 2006
- Berichten
- 77
Hallo,
Ik ben op zoek naar iets om in een bepaalde map alle soorten bestanden te laten verwijderen die bijvoorbeeld ouder zijn dan 30 dagen. Het liefst met excel en vba denk ik.
Ik heb wat gevonden, maar doet het niet geeft aan 0 files verwijderd terwijl deze toch ouder zijn. Omdat we op het netwerk werken mogen we geen scripts gebruiken, maar omdat excel met vba het wel doet zou hier de oplossing.
Ik heb dit als module in excel geplaatst. Ik denk dat het niet wil omdat er geen mappen kan worden aangemaakt. Ik heb zelf verder geen kennis hiervan dus kan ook niet zoveel hiervan begrijpen.
-----------------------------------------------------
' directories om te schonen...
Path = "c:\test"
' delete files ouder dan bijvoorbeeld 30 dagen...
killdate = Date() - 30
arFiles = Array()
Set fso = CreateObject("scripting.filesystemobject")
' Niet weggooien als er nog mensen gebruik maken van de file
' file verzameling krijgt een return van File System Object (FSO).
' File verzameling kan vastlopen.
' Aparte plaats wordt gemaakt voor deze files.
'
SelectFiles Path, killdate, arFiles, True
nDeleted = 0
For n = 0 To UBound(arFiles)
'=================================================
' Files die weggegooid via FSO methode KOMEN *NIET* IN DE PRULLENBAK!!!
'=================================================
On Error Resume Next 'in case of 'in use' files...
arFiles(n).Delete True
If Err.Number <> 0 Then
wscript.echo "Unable to delete: " & arFiles(n).Path
Else
nDeleted = nDeleted + 1
End If
On Error GoTo 0
Next
'Onderstaande 2 regels geven op beeldscherm aan hoeveel files er zijn geschoond.
MsgBox nDeleted & " of " & UBound(arFiles) + 1 _
& " aantal files zijn weggegooid"
End Sub
Sub SelectFiles(sPath, vKillDate, arFilesToKill, bIncludeSubFolders)
On Error Resume Next
'selecteer files om weg te gooien of verplaats ze naar een plek...
'
Set folder = fso.getfolder(sPath)
Set Files = folder.Files
For Each file In Files
' Juiste datum wordt hier getest
'
dtlastmodified = Null
On Error Resume Next
dtlastmodified = file.datelastmodified
On Error GoTo 0
If Not IsNull(dtlastmodified) Then
If dtlastmodified < vKillDate Then
Count = UBound(arFilesToKill) + 1
ReDim Preserve arFilesToKill(Count)
Set arFilesToKill(Count) = file
End If
End If
' Hier gaat het volgens excel fout "For lus"
Next
If bIncludeSubFolders Then
For Each fldr In folder.subfolders
SelectFiles fldr.Path, vKillDate, arFilesToKill, True
Next
End If
End Sub
Ik ben op zoek naar iets om in een bepaalde map alle soorten bestanden te laten verwijderen die bijvoorbeeld ouder zijn dan 30 dagen. Het liefst met excel en vba denk ik.
Ik heb wat gevonden, maar doet het niet geeft aan 0 files verwijderd terwijl deze toch ouder zijn. Omdat we op het netwerk werken mogen we geen scripts gebruiken, maar omdat excel met vba het wel doet zou hier de oplossing.
Ik heb dit als module in excel geplaatst. Ik denk dat het niet wil omdat er geen mappen kan worden aangemaakt. Ik heb zelf verder geen kennis hiervan dus kan ook niet zoveel hiervan begrijpen.
-----------------------------------------------------
' directories om te schonen...
Path = "c:\test"
' delete files ouder dan bijvoorbeeld 30 dagen...
killdate = Date() - 30
arFiles = Array()
Set fso = CreateObject("scripting.filesystemobject")
' Niet weggooien als er nog mensen gebruik maken van de file
' file verzameling krijgt een return van File System Object (FSO).
' File verzameling kan vastlopen.
' Aparte plaats wordt gemaakt voor deze files.
'
SelectFiles Path, killdate, arFiles, True
nDeleted = 0
For n = 0 To UBound(arFiles)
'=================================================
' Files die weggegooid via FSO methode KOMEN *NIET* IN DE PRULLENBAK!!!
'=================================================
On Error Resume Next 'in case of 'in use' files...
arFiles(n).Delete True
If Err.Number <> 0 Then
wscript.echo "Unable to delete: " & arFiles(n).Path
Else
nDeleted = nDeleted + 1
End If
On Error GoTo 0
Next
'Onderstaande 2 regels geven op beeldscherm aan hoeveel files er zijn geschoond.
MsgBox nDeleted & " of " & UBound(arFiles) + 1 _
& " aantal files zijn weggegooid"
End Sub
Sub SelectFiles(sPath, vKillDate, arFilesToKill, bIncludeSubFolders)
On Error Resume Next
'selecteer files om weg te gooien of verplaats ze naar een plek...
'
Set folder = fso.getfolder(sPath)
Set Files = folder.Files
For Each file In Files
' Juiste datum wordt hier getest
'
dtlastmodified = Null
On Error Resume Next
dtlastmodified = file.datelastmodified
On Error GoTo 0
If Not IsNull(dtlastmodified) Then
If dtlastmodified < vKillDate Then
Count = UBound(arFilesToKill) + 1
ReDim Preserve arFilesToKill(Count)
Set arFilesToKill(Count) = file
End If
End If
' Hier gaat het volgens excel fout "For lus"
Next
If bIncludeSubFolders Then
For Each fldr In folder.subfolders
SelectFiles fldr.Path, vKillDate, arFilesToKill, True
Next
End If
End Sub
Laatst bewerkt: