Opkuisen van folder met pdf documenten

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
528
Goede avond iedereen,

Via de database worden o.a. brieven naar klanten opgemaakt vergezeld van een "verschilstaat". (=Rapport)
Iedere brief (rapport) wordt als PDF opgeslagen (verplichte digitale copy)

De klant heeft 6 maanden de tijd om eventueel nog te reageren op deze brief. (Wat maar af en toe gebeurd)

Nu wil ik dat deze folder, bij het afsluiten van de database, opgeschoond wordt en alle pdf's die ouder zijn dan 6 maanden t.o.v. vandaag verwijderd worden.

Kan dit met VBA?

de pdf's staan in volgende folder : CurrentProject.Path & "\Verschilstaten - Decomptes - PDF"


Thanks

Greetz

Pascal :cool:
 
Ja dat kan :). Je kunt een procedure maken die m.b.v. het DIR commando de bestanden opvraagt die ouder zijn dan 6 maanden, al is dat wel afhankelijk van de manier waarop je bijhoudt of iemand binnen de tijd reageert of niet. Hou je dat binnen de db bij? Of moet de routine naar de datum van de bestanden kijken? Dat maakt nogal uit namelijk.
 
Hey OctaFish,

De datum wordt niet bijgehouden in de database. Het digitale kopij hoeft maar 6 maanden bijgehouden worden. (Vraag mij niet naar het waarom, er zit namelijk ook een papieren kopij in het dossier...)

En het essentiële (de verschilstaat met geweigerde kosten) van de brief is terug te vinden in de database...

De routine zou dus moeten opgebouwd worden op basis van de datum van het bestand.

Nu komen er zo'n 300 pdf's per maand bij in de folder, als dit automatisch zou kunnen opgekuist worden dan hoeft dit niet manueel te gebeuren.


Thanks

Greetz

Pascal :cool:
 
Octafish,

Ze zouden eigenlijk moeten verwijderd worden op basis van de datum "Gewijzigd op" en niet de aanmaak datum...

Als ik de pdf kopieer naar een andere folder wijzigt de aanmaakdatum op bv vandaag... maar de gewijzigd datum veranderd niet...
 
Als het alleen een kwestie is van een map opschonen? Deze zoekopdracht kijkt naar de datum gewijzigd. Zoekmachine Everything:

Code:
dm:<12/03/2019 ext:pdf path:<test123456789>

dm = date modified
Zoeken > Alles
Regex niet geactiveerd

Kun je zelf bepalen wat je met de gevonden bestanden doet.
 
Laatst bewerkt:
Senso,

Bedankt voor uw reactie.

Ik vermoed dat uw oplossing gebaseerd is op 1 datum. Het opschonen zou eigenlijk dagelijks moeten gebeuren. Ik weet ook niet hoe ik nu verder moet met uw oplossing.

Ik ben een VBA leerling en ik heb naar oplossingen gezocht op het net zonder er een te vinden die geschikt is voor mijn specifieke vraag.

Ik leer ook heel veel door jullie aangeboden oplossingen...

Waarschijnlijk zullen er wel oplossingen zijn maar het hangt ook altijd een beetje af van hoe ik het formuleer in de Google search.

Kan iemand mij een beetje op weg helpen?

Thanks

Greetz

Pascal :cool:
 
Mijn 'oplossing' heeft niets met VBA te maken. Ik las:
"Nu wil ik dat deze folder, bij het afsluiten van de database, opgeschoond wordt en alle pdf's die ouder zijn dan 6 maanden t.o.v. vandaag verwijderd worden." Ik neem aan dat onder folder een map wordt verstaan. Van een datum kan iedereen 6 maand aftrekken. 13/9 wordt 13/3

Opdracht in de zoekmachine Everything kun je bewaren dus je hoeft alleen even de datum te veranderen en als je een ander pad/mapnaam hebt deze in te voeren. Dat is alles. Alle pdf's ouder dan zes maanden uit die map krijg je te zien. Kunt dan zelf bepalen wat je er mee doet (deleten/verplaatsen).

Als je today invoert ben je er volgens mij ook. Resultaten moet je zelf altijd beoordelen!

Code:
dm:<today ext:pdf path:<test123456789>

Nee, dat klopt natuurlijk niet, sorry.

VBA kan ik niet verder mee helpen. VBA is dat geen macro of script? Waar is jouw script dan?
 
Laatst bewerkt:
Senso,

Het is inderdaad de bedoeling om dit vanuit een Access database te doen met VBA.

Ik heb tot hier toe geen geschikt voorbeeld gevonden dat ik eventueel voor mezelf kan aanpassen.

Toch bedankt voor uw reactie.

Greetz

Pascal
 
Senso,

Bedankt voor de tips, ik zal zeker eens kijken of er iets bij zit dat ik kan gebruiken. :thumb:

Greetz

Pascal :cool:
 
Volgens mij is het niet zo'n heel moeilijke routine.
Code:
Sub VenA()
  c00 = "E:\temp\"
  Set fc = CreateObject("Scripting.FileSystemObject").GetFolder(c00).Files
    For Each it In fc
      If LCase(Right(it.Name, 3)) = "pdf" And DateDiff("m", it.datecreated, Date) > 6 Then Kill it.Path
    Next it
End Sub
 
Laatst bewerkt:
VenA,

Bedankt voor de reactie.

Ik krijg wel compileerfouten, dat bepaalde zaken zoals c00, fc, it niet gedefinieerd zijn.

Als ik je code kan volgen denk ik dat je met de aanmaakdatum werkt en niet met de datum "gewijzigd op".

Ik heb de folder met de pdf's naar de werkmap thuis gekopieerd en alle aanmaakdata zijn dezelfde.


Knipsel.JPG

Greetz

Pascal :cool:
 
Probeer datemodified

de pdf's staan in volgende folder : CurrentProject.Path & "\Verschilstaten - Decomptes - PDF"

Dat moet je toch ook verwerken in het script?

Iets van Kill "E:\Verschilstaten - Decomptes - PDF\*.pdf" en dan met een schakeloptie ouder dan zes maand (date modified). Ik gok maar iets.

Succes verder, want ik kan niet verder helpen, omdat ik hier geen verstand van heb.
 
Laatst bewerkt:
Dan definieer je de variabelen toch? Met <F8> kan je toch door de code wandelen en zien welke elementen it bevat? Als je geen Engels kan gebruik dan Google vertalen. 'datecreated' wat zal dit zijn? Ohja de datum dat het document voor het eerst opgeslagen is in een bepaalde map. Als je een bestand verplaatst naar een andere map dan is de creatiedatum anders. Jij schrijft de bestanden weg vanuit jouw database naar een standaard map die je na creatiedatum + 6 maanden wil verwijderen en dan werkt het gewoon.
En anders gebruik je 1 van de andere datums die ook in het bestand vastliggen.
 
VanA, Senso,

Ik vind het fantastisch wat jullie doen maar soms gaan jullie oplossingen mijn petje te boven. :confused:

Ik leer heel veel met de oplossingen die jullie aanbieden maar ik blijf toch maar een beginneling wat VBA betreft.

Dus zonder een voorbeeld is het extra moeilijk voor mij. :rolleyes:

Met de hulp van "AccessWorld" https://www.access-programmers.co.uk/forums/showthread.php?p=1640047#post1640047

zijn zij met de volgende oplossing gekomen :

Code:
Private Sub btAfsluiten_Click()
    Dim fso As Object
    Dim oDir As Object
    Dim fil As Object
    Dim PDF_PATH As String
    Dim i As Long
    Dim col As New Collection
    PDF_PATH = CurrentProject.Path & "\Verschilstaten - Decomptes - PDF"
    Set fso = CreateObject("scripting.filesystemobject")
    Set oDir = fso.GetFolder(PDF_PATH)
    For Each fil In oDir.Files
        If fil.Name Like "*.pdf" Then
            If DateValue(fil.DateLastModified) < DateAdd("m", -6, Date) Then
                col.Add fil.Path
            End If
        End If
    Next
    Set fil = Nothing
    Set oDir = Nothing
    For i = 1 To col.Count
        fso.deletefile col(i)
    Next
    Set fso = Nothing
DoCmd.Quit
End Sub

Bedankt voor de moeite en tot een volgende keer.

Greetz

Pascal :cool:
 
Ik vind het fantastisch wat jullie doen maar soms gaan jullie oplossingen mijn petje te boven.
Dat hoor ik niet vaak. Ik sta wel bekend als de "deskundige" maar van VBA weet en snap ik niets. Ik probeer je alleen maar op weg te helpen. Nu ik de oplossing zie, denk ik wel, dat ziet er gemakkelijk uit, waarom kan ik daar niet opkomen?:D:D:D

Overigens als je de vraag/probleem ook op een ander forum voorlegt, maak daar dan direct melding van in de openingspost. Het is toegestaan maar blijft een feit dat sommige mensen daar een hekel aan hebben en anderen weer niet.

Mooi, dat het dan gelukt is.:thumb:
 
Senso,

Ik stel mijn vraag altijd hier op het Helpmij forum. Nooit op 2 plaatsen tegelijk. Het is enkel wanneer ik het gevoel krijg dat ik niet echt verder kom met aangeboden oplossingen, dan doe ik wel eens beroep op andere forums. Als ik daar dan een oplossing aangeboden krijg die past voor mij dan vermeld ik dit ook hier, waarom niet. Het is toch de bedoeling elkaar te helpen. Maar mijn voorkeur gaat toch naar Helpmij. Ik ben hier al fantastisch geholpen door zeer bekwame mensen. Soms denk ik wel waar blijven ze het halen... :D

Dus tot de volgende

Greetz

Pascal
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan