3.2k Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Hallo Excelfangemeinde,
ich habe das Problem, dass nach einer Übertragung einer Datei aufgrund von Schreib-/Leserechte auf einem Verzeichnis neben der korrekten Excel-Datei auch noch eine weitere temporäre Datei ohne einen Zusatz .xls .tmp oder dergleichen gespeichert wird.

Mit dem Befehl Kill "G:\Personal\abc\*." komme ich leider nicht weiter, da er mir dann auch alle anderen Dateien z.B. .xls löscht.

Kann mir jemand sagen, wie der Befehl oder das Makro dafür aussehen müsste um zu sagen... lösche alle Dateien, die nicht die Endung .xls haben.

Umgehen könnte man das Problem natürlich mit den erweiteren Zugriffsrechten, aber das ist hier nicht erwünscht.

In der Hoffnung, dass jemand eine Hilfestellung für mich hat, möchte ich Euch noch einen schönen Tag und ein schönes verlängertes Wochenende wünschen, sofern Ihr auch den Brückentag genießen könnt.

In diesem Sinne... have a nice Day... Gruß Helmut

3 Antworten

0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Leute,

habe nach diversen Lösungsansätzen eine anderes Makro "missbraucht" und führt mich zu meinem Ergebnis.

Für diejenigen, die ebenfalls mal Probleme mit solchen Dateien haben, anbei das Makro.

Sub Exceldateianzeigen()
Dim obj As Variant
Const verz = "G:\Personal\abc\"

On Error GoTo fehler
ChDir verz

With Application.FileSearch
.NewSearch
.LookIn = verz
.Filename = "*."
.SearchSubFolders = True

If .Execute() > 0 Then
For Each obj In .FoundFiles
Kill obj
Next obj
End If
End With
Exit Sub
fehler:
MsgBox " Es gibt das Verzeichnis nicht" & verz
End Sub


In diesem Sinne... have a nice Day... Gruß Helmut
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi rainer ^^

fuer dich gebastelt .-)

gruss nighty

einzufuegen alt + f11 in ein allgemeines modul

es wird der angegebene ordnerinhalt gelöscht mit ausschluss der benannten endungen

=Killone(Pfad;punktEndung;punktEndung;weitere ausschluß endungen)

z.b.

=Killone("D:\temp\";".xls";".txt")
=Killone("D:\temp\";".xls";.txt";".pdf")

Function Killone(DatPfad As String, ParamArray AusIndex() As Variant)
Dim DateiName As String
Dim Schalter As Boolean
Dim SchalterL As Boolean
Dim ParmIndex As Integer
DateiName = Dir(DatPfad)
If VerzeichnisExists(DatPfad) = True Then
Do While DateiName <> ""
For ParmIndex = 0 To UBound(AusIndex)
If Mid(DateiName, InStr(1, DateiName, "."), Len(DateiName) - InStr(1, DateiName, ".") + 1) = AusIndex(ParmIndex) Then
Schalter = True
End If
Next ParmIndex
If Schalter = False Then
Kill (DatPfad) & DateiName
Killone = "Raedy"
SchalterL = True
End If
Schalter = False
DateiName = Dir
Loop
Else
Killone = "Pfad ?"
End If
If SchalterL = False Then Killone = "Keine Dateien gefunden"
End Function


Function VerzeichnisExists(StrPfad As String) As Boolean
On Error Resume Next
ChDir StrPfad
If Err = 0 Then VerzeichnisExists = True
End Function
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
hi nighty,

auch wenn ich nicht Rainer heiße, so hatte ich eigentlich gar nicht
mehr mit einer anderen Antwort gerechnet.

Von daher erst einmal vielen Dank für Deine Lösung und bin überrascht,
wie kompliziert die Lösung letztendlich doch aussieht.

Hätte eher eine Kurzform wie wenn Dateiendung <> .xls then kill... erwartet,

OK.. wenn ich mein kleines Wissen da ausgrabe, hast Du sowas ja auch
letztendlich so gemacht hast... puh... aber so viel Programmierung hätte ich
echt nicht gedacht.

Testen kann ich derzeitig nicht, da ich die Datei an der Arbeit habe.

Nochmals vielen Dank für Deinen Lösungsweg und have a nice Day... Gruß Helmut
...