Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien mit Kill Funktion löschen

Dateien mit Kill Funktion löschen
Timo
Hallo zusammen,
ich lösche mit folgendem VBA-Code sämtliche txt Dateien im lokalen Temp Verzeichnis:
Sub TMP_Loeschen()
Dim Verzeichnis As String
Verzeichnis = Environ("TEMP")
On Error Resume Next
Kill (Verzeichnis & "\*.txt")
End Sub
Leider bricht er das Löschen immer ab, sobald er auf eine txt-Datei keinen Zugriff hat, bzw. wenn eine txt-Datei gerade verwendet wird. Diese gerade verwendeten bzw. geschützten Dateien sollen ja auch nicht gelöscht werden, jedoch soll er diese überspringen und die nächste Datei löschen.
Hat jemand eine Idee, was ich falsch mache?
Danke für Eure Antworten
Gruß Timo
AW: Dateien mit Kill Funktion löschen
11.08.2012 19:47:07
Matze,Matthias
Hallo Timo,
bin jetzt nicht der Profi für dein Anliegen, aber das geht ja standart mäßig in Windows auch nicht.
Du muss die Dateien die du NICHT löschen willst vorher aus dem Verzeichnis auslagern.
Daher wäre es sinnvoll sich den Ablauf vorher zu überlegen-
gruß Matze
aber vielleicht gibt es ja doch ne simple Lösung - lasse offen !
AW: Dateien mit Kill Funktion löschen
11.08.2012 20:24:07
Josef

Hallo Timo,
versuch es mal so.
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Enum XL_FILESTATUS
  XL_UNDEFINED = -1
  XL_CLOSED
  XL_OPEN
  XL_DONTEXIST
End Enum

Public Function FileStatus(xlFile As String) As XL_FILESTATUS
  
  On Error Resume Next
  
  Dim File%: File = FreeFile
  
  Err.Clear
  
  Open xlFile For Input Access Read Lock Read As #File
  Close #File
  
  Select Case Err.Number
    Case 0: FileStatus = XL_CLOSED
    Case 70: FileStatus = XL_OPEN
    Case 76: FileStatus = XL_DONTEXIST
    Case Else: FileStatus = XL_UNDEFINED
  End Select
  
End Function


Sub TMP_Loeschen()
  Dim Verzeichnis As String, strFile As String
  
  Verzeichnis = Environ("TEMP") & "\"
  
  strFile = Dir(Verzeichnis & "*.txt", vbNormal)
  
  Do While strFile <> ""
    If FileStatus(Verzeichnis & strFile) = XL_CLOSED Then Kill Verzeichnis & strFile
    strFile = Dir
  Loop
  
End Sub



« Gruß Sepp »

Anzeige
AW: Dateien mit Kill Funktion löschen
11.08.2012 21:33:24
Timo
Hallo Sepp,
funktioniert leider nicht.
Laufzeitfehler 70
Zugriff verweigert
Gruß Timo
AW: Dateien mit Kill Funktion löschen
11.08.2012 22:53:01
Josef

Hallo Timo,
dann macht wohl Dir() Probleme.
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Enum XL_FILESTATUS
  XL_UNDEFINED = -1
  XL_CLOSED
  XL_OPEN
  XL_DONTEXIST
End Enum

Public Function FileStatus(xlFile As String) As XL_FILESTATUS
  
  On Error Resume Next
  
  Dim File%: File = FreeFile
  
  Err.Clear
  
  Open xlFile For Input Access Read Lock Read As #File
  Close #File
  
  Select Case Err.Number
    Case 0: FileStatus = XL_CLOSED
    Case 70: FileStatus = XL_OPEN
    Case 76: FileStatus = XL_DONTEXIST
    Case Else: FileStatus = XL_UNDEFINED
  End Select
  
End Function


Sub TMP_Loeschen()
  Dim objFSO As Object, objFolder As Object, objFile As Object
  Dim strPath As String
  
  strPath = Environ("TEMP")
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  
  Set objFolder = objFSO.GetFolder(strPath)
  
  For Each objFile In objFolder.Files
    If objFile.Name Like "*.txt" Then
      If FileStatus(objFile.Path) = XL_CLOSED Then objFSO.DeleteFile objFile.Path
    End If
  Next
  
  Set objFSO = Nothing
  Set objFolder = Nothing
  Set objFile = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Dateien mit Kill Funktion löschen
11.08.2012 23:18:29
Timo
Hallo Sepp,
funktioniert leider trotzdem nicht.
Laufzeitfehler 70
Zugriff verweigert
Es werden alle txt Dateien gelöscht, die vor der gesperrten liegen. Sobald er die gesperrte Datei erreicht hat, bricht er ab und die nachfolgenden werden ignoriert :-(
Gruß Timo
AW: Dateien mit Kill Funktion löschen
11.08.2012 23:20:36
Josef

Hallo Timo,
dann hilft wohl nur rohe Gewalt;-))
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Enum XL_FILESTATUS
  XL_UNDEFINED = -1
  XL_CLOSED
  XL_OPEN
  XL_DONTEXIST
End Enum

Public Function FileStatus(xlFile As String) As XL_FILESTATUS
  
  On Error Resume Next
  
  Dim File%: File = FreeFile
  
  Err.Clear
  
  Open xlFile For Input Access Read Lock Read As #File
  Close #File
  
  Select Case Err.Number
    Case 0: FileStatus = XL_CLOSED
    Case 70: FileStatus = XL_OPEN
    Case 76: FileStatus = XL_DONTEXIST
    Case Else: FileStatus = XL_UNDEFINED
  End Select
  
End Function


Sub TMP_Loeschen()
  Dim objFSO As Object, objFolder As Object, objFile As Object
  Dim strPath As String
  
  strPath = Environ("TEMP")
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  
  Set objFolder = objFSO.GetFolder(strPath)
  
  On Error Resume Next
  
  For Each objFile In objFolder.Files
    If objFile.Name Like "*.txt" Then
      If FileStatus(objFile.Path) = XL_CLOSED Then objFSO.DeleteFile objFile.Path
    End If
  Next
  
  Set objFSO = Nothing
  Set objFolder = Nothing
  Set objFile = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Dateien mit Kill Funktion löschen
11.08.2012 23:37:24
Timo
Hallo Sepp,
jetzt funktioniert es. Definiere mir mal bitte "rohe Gewalt".
Was ist hier anders?
Ich habe herausgefunden, dass Deine vorhergehende Version auch funktioniert, wenn man direkt unter Sub TMP_Loeschen()
On Error Resume Next
schreibt.
Was ist jetzt sicherer, die rohe Gewalt Version oder das mit "On Error Resume Next"?
Vielen Dank für Deine Mühe!
Gruß Timo
AW: Dateien mit Kill Funktion löschen
12.08.2012 01:46:39
Franc
Genau das ist auch der Unterschied bei der Variante mit "roher Gewalt". ^^
"On Error Resume Next" steht vor der Schleife beim löschen.
AW: Dateien mit Kill Funktion löschen
12.08.2012 12:50:29
Timo
Hallo Franc,
habs auch gemerkt.^^
Vielen Dank (besonders an Sepp) für Eure Hilfe!
Gruß Timo
Anzeige

8 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige