VBA Lösung - löschen von*.tmp 6 & *.docx

Antwort erstellen

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :razz: :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :badgrin: :doubt:
BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet
Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: VBA Lösung - löschen von*.tmp 6 & *.docx

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von theoS » 20. Dez 2019, 17:45

Keine Erklärung, denn das sind Dateien, die sich mit dem anderen Code ganz einfach löschen ließen. Da es damit geht, kann man ja auf die Kill verzichten. Vor allem weil der TS genau in dem Verzeichnis wüten möchte. :)

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von knobbi38 » 20. Dez 2019, 17:26

@theo:

das ist allerdings ein "Allerweltsfehler". Die Ursache für die Zugriffsverweigerung läßt sich mit Sicherheit herausfinden, was jedoch nur lokal geht.
Ich habe jedenfalls keine Probleme mit der Kill Anweisung, wobei ich die Dateien mit einem Batchprogramm angelegt habe und dann per VBA Prozedur in Word mit Platzhaltern löschen konnte.

Gruß Ulrich

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von theoS » 20. Dez 2019, 15:51

Kein Zugriff.

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von knobbi38 » 20. Dez 2019, 14:04

@Theo:

und was für eine Fehlermeldung, wenn löschen nicht geht?

Ulrich

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von theoS » 20. Dez 2019, 09:10

Das ist das merkwürdige. Zugriff auf eine log Datei die älter als ein Jahr ist? Zudem sollten ja dann zumindest alle auf die kill zugreifen darf gelöscht sein. Ergebnis war aber keine wurde gelöscht. Das Netz ist voll von Anfragen zu dem Thema.

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von knobbi38 » 20. Dez 2019, 01:35

Hallo Theo,

und welche Fehlermeldung erhältst du, wenn KILL nicht löschen kann?
Zugriffsrechte mal vorausgesetzt, kann Kill dann nicht löschen, wenn noch ein Handle existiert oder die Datei Read-Only ist, also eigentlich eine sichere Sache.

Ulrich

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von theoS » 20. Dez 2019, 00:36

Naja, du hast schon recht, aber bei mir hat das auch nicht mit der kill Anweisung getan. Zumindest in Verbindung mit Platzhalter. Dabei war es egal, ob ich den korrekten Pfad übers environ oder hart codiert eingegeben hab.
Warum das so ist? Keine Ahnung. Ist nämlich nicht bei jedem file so. Einen konnte ich mit kill löschen. Aber das war ein 'bmp, also lags definitiv nicht am Pfad.
Die Funktion die in dem Link angeboten wird, löscht mir auch die .log, die kill nicht killen mochte.

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von knobbi38 » 20. Dez 2019, 00:21

Hallo,

natürlich funktioniert die Kill-Anweisung, aber der Parameter Pathname sollte dann schon stimmen. Dieses
backupDir = "C:\Users\%Username%\AppData\Local\Temp\*.docx"
ist jedenfalls kein gültiger Pathname, weil der String nicht innerhalb eine Kommandozeile verwendet wird, sondern an eine VBA Anweisung als Parameter übergeben wird und diese kann mit dem Pfad nicht umgehen - es gibt schlichtweg kein Verzeichnis mit der Bezeichnung '%username%.

Die Zuweisung könnte z.B. so gemacht werden:
Code: Alles auswählen
backupDir = Environ("LOCALAPPDATA") & "\Temp\*.docx"


Und On Error Resume Next ist in Verbindung mit Anweisungen zur Dateiverarbeitung keine gute Idee. Besser eine ordenliche Fehlerbehandlung programmieren, dann wäre erst gar kein Rätselraten entstanden.

Gruß Ulrich

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von theoS » 19. Dez 2019, 22:41

Merkwürdige Sache, denn eigentlich sollte das gehen.
Schau dir mal diese Seite an hier:
https://dbwiki.net/wiki/VBA_Tipp:_Datei_l%C3%B6schen

Tipp 3 ist das was dann funzt, zumindest hat das bei mit mal alle .log Dateien rausgeschmissen.
Aufruf mit:
Code: Alles auswählen
Sub löschen()
Dim backupDir As String
Dim usT As String
usT = Environ("Username")
backupDir = "C:\Users\" & usT & "\AppData\Local\Temp\*.log"
Call DateiLoeschen(backupDir, True, False, True)
End Sub


(Kannst den Pfad des Temp auch mit Path = Environ$("TEMP") bestimmen, aber da fehlt dir am Ende der \ etc.]

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von Gast » 18. Dez 2019, 13:30


also ich habe es mal mit Kill versucht, aber irgendwie funktioniert das nicht so richtig


Lass erstmal das »On Error Resume Next« weg. (Sollte man nur verwenden, wenn man weiß, was man tut).

Vielleicht fällt dir dann anhand der Fehlermeldung was auf.

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von Fen » 17. Dez 2019, 18:22

Hallo,

ungeprüft:

Code: Alles auswählen
sub Loesch()
kill environ("temp" ) & "\*.doc?"
end sub


Wenn Du etwas experimentieren möchtes, legt Du diesen Code in die "Normal.dot" mit dem Äquivalent zu Excel "Application.quit".

mfg

Re: VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von toscha » 17. Dez 2019, 16:10

Moin,

also ich habe es mal mit Kill versucht, aber irgendwie funktioniert das nicht so richtig

Sub löschen()
Dim backupDir
backupDir = "C:\Users\%Username%\AppData\Local\Temp\*.docx"
backupDir = "C:\Users\%Username%\AppData\Local\Temp\*.tmp"
On Error Resume Next
Kill (backupDir & "\*.docx")
Kill (backupDir & "\*.tmp")
End Sub

VBA Lösung - löschen von*.tmp 6 & *.docx

Beitrag von toscha » 16. Dez 2019, 12:59

Hallo,

vielleicht kan mir jemand weiterhelfen.

Ich habe folgende Parameter in einer Batch verwendet, nun möchte ich diese in eine Wordvorlage/n implementieren und jedes mal wenn die oder eine andere Vorlage geöffnet wird, sollen in dem entsprechenden Verzeichnis nur die *.tmp & *.docx gelöscht werden. (Nur wenn vorhanden, wenn nicht, dann soll es auch keine Fehlermeldung ausgegeben werden)
Der Hintergrund ist der, dass die *.tmp & *.docx nicht automatisch nach dem schließen verschwinden. Bisher haben sich dadurch so viele alte Daten angesammelt und für die Zukunft möchte ich das vermeiden.

Batch:
echo off
del C:\Users\%Username%\AppData\Local\Temp\*.tmp /q
del C:\Users\%Username%\AppData\Local\Temp\*.docx /q
exit

Vielen Dank im voraus.

Nach oben