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

Moderator: ModerationP

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

Beitragvon 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.
toscha
Neuling
 
Beiträge: 2
Registriert: 16. Dez 2019, 10:56

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

Beitragvon 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
toscha
Neuling
 
Beiträge: 2
Registriert: 16. Dez 2019, 10:56

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

Beitragvon 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
Fen
 

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

Beitragvon 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.
Gast
 

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

Beitragvon 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.]
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5196
Registriert: 19. Apr 2008, 00:14

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

Beitragvon 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
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2488
Registriert: 02. Jul 2015, 14:23

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

Beitragvon 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.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5196
Registriert: 19. Apr 2008, 00:14

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

Beitragvon 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
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2488
Registriert: 02. Jul 2015, 14:23

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

Beitragvon 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.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5196
Registriert: 19. Apr 2008, 00:14

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

Beitragvon knobbi38 » 20. Dez 2019, 14:04

@Theo:

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

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2488
Registriert: 02. Jul 2015, 14:23

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

Beitragvon theoS » 20. Dez 2019, 15:51

Kein Zugriff.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5196
Registriert: 19. Apr 2008, 00:14

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

Beitragvon 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
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2488
Registriert: 02. Jul 2015, 14:23

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

Beitragvon 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. :)
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5196
Registriert: 19. Apr 2008, 00:14


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste