Omdat ik vaak dossiers dien in te scannen (pdf-formaat), en heel wat moet scrollen als ik dat
dossier dan in het klantendossier wil plaatsen, vond ik het een goed idee om
dat eindelijk eens te automatiseren.
Ik werk in access 97 en 2003, dus de later ingebouwde methode kon ik niet gebruiken.
Er bestaat nog zoiets als de Stephen Leban-code, maar die krijg ik niet aan de praat.
Nà veel probeerwerk (en googelen) heb ik de volgende code samengesteld en ze werkt.
(weet al dat ik commentaar ga krijgen, maar dat mag)
Ik heb een knop met 'event' on click. Ik werk vanuit een FORM [KREDIETEN] Met daarin een subform, waar de verschillende contractnummers en andere
dossiergegevens van de geopende klant inzitten.
Ik roep een rapport aan (VOORBLADKREDIETDOSSIER). DAT ZET IK EERST OM IN PDF FORMAAT
(Niet via Adobe, want dat lukt niet). IK zet dit dossier wel al in een hoofdmap, maar nog niet in
de correcte map, want om de één of andere reden blokkeerde dat. Ik gebruik de
'Sendkeys'-methode omdat ik daar de code van vond.
Vervolgens verander ik het gecreëerde bestand van naam en verplaats het naar de juiste map.
(Met Name .... AS werkt niet in 97, wel in 2003)
Hiernà open ik de pdf-file (met de normale PDF-writer, bij mij is dat Foxit, maar op kantoor is dat Adobe)
zodat ik meteen kan beginnen scannen.
Tot daar ben ik een tevreden man...
-------------------------
Het volgende gebeurt nog fout: Ik creëer wel mijn rapport als pdf ,
maar er wordt ook een pdf van mijn subform gecreëerd. (Als de pdf-writer
vraagt om het te 'saven' druk ik gewoon op annuleren, maar dat is niet echt
zoals het hoort).
2 vragen:
1)Hoe krijg ik die subform-pdf (KREDIETEN.PDF) weg?
2)Kan ik mijn normale pdf (in dit geval VOORBLADKREDIETDOSSIER)
automatisch laten saven, dus zonder dat ik zelf nog op ok-toets
dien te drukken.
Als er iemand een idee heeft hoor ik het graag.
(Ik heb voor de leesbaarheid de lange codes gesplitst met 'underscore' _ )
Ik weet niet of dat zo hoort...
dossier dan in het klantendossier wil plaatsen, vond ik het een goed idee om
dat eindelijk eens te automatiseren.
Ik werk in access 97 en 2003, dus de later ingebouwde methode kon ik niet gebruiken.
Er bestaat nog zoiets als de Stephen Leban-code, maar die krijg ik niet aan de praat.
Nà veel probeerwerk (en googelen) heb ik de volgende code samengesteld en ze werkt.
(weet al dat ik commentaar ga krijgen, maar dat mag)
Ik heb een knop met 'event' on click. Ik werk vanuit een FORM [KREDIETEN] Met daarin een subform, waar de verschillende contractnummers en andere
dossiergegevens van de geopende klant inzitten.
Ik roep een rapport aan (VOORBLADKREDIETDOSSIER). DAT ZET IK EERST OM IN PDF FORMAAT
(Niet via Adobe, want dat lukt niet). IK zet dit dossier wel al in een hoofdmap, maar nog niet in
de correcte map, want om de één of andere reden blokkeerde dat. Ik gebruik de
'Sendkeys'-methode omdat ik daar de code van vond.
Vervolgens verander ik het gecreëerde bestand van naam en verplaats het naar de juiste map.
(Met Name .... AS werkt niet in 97, wel in 2003)
Hiernà open ik de pdf-file (met de normale PDF-writer, bij mij is dat Foxit, maar op kantoor is dat Adobe)
zodat ik meteen kan beginnen scannen.
Tot daar ben ik een tevreden man...
-------------------------
Het volgende gebeurt nog fout: Ik creëer wel mijn rapport als pdf ,
maar er wordt ook een pdf van mijn subform gecreëerd. (Als de pdf-writer
vraagt om het te 'saven' druk ik gewoon op annuleren, maar dat is niet echt
zoals het hoort).
2 vragen:
1)Hoe krijg ik die subform-pdf (KREDIETEN.PDF) weg?
2)Kan ik mijn normale pdf (in dit geval VOORBLADKREDIETDOSSIER)
automatisch laten saven, dus zonder dat ik zelf nog op ok-toets
dien te drukken.
Als er iemand een idee heeft hoor ik het graag.
(Ik heb voor de leesbaarheid de lange codes gesplitst met 'underscore' _ )
Ik weet niet of dat zo hoort...
Code:
Private Sub pdf_creëren_en_openen_Click()
Dim rptName As String
rptName = "VOORBLADKREDIETDOSSIER"
Dim Filename As String
Dim sPDFPath As String
sPDFPath = "C:\Users\Documents\KREDIETMAP\" & LCase(Me.ACHTERNAAM & " " & Me.VOORNAAM)
If Dir(sPDFPath, vbDirectory) = "" Then MkDir sPDFPath
Dim tmpPrinter As Printer
Set tmpPrinter = Application.Printer 'Default Printer
Set Application.Printer = Application.Printers("CutePDF Writer")
'Change the application printer to CutePdf writer or("another PDF Printer")
DoCmd.OpenReport (rptName), acHidden = 1
'Send the Open Report to a .pdf file
SendKeys "^p~" & Filename & "~", vbNormalFocus
'Close report
DoCmd.Close acReport, "RptPenalized"
' Restore Default printers
Set tmpPrinter = Application.Printer
Set Application.Printer = Application.Printers(0)
Dim started As Single: started = Timer
'het volgende commando even laten wachten tot het huidige uitgevoerd is
Do: DoEvents: Loop Until Timer - started >= 15
'het volgende commando even laten wachten tot het huidige uitgevoerd is
Do: DoEvents: Loop Until Timer - started >= 10
'het zopas gecreeerde pdf document van naam veranderen en naar de juiste map verplaatsen
Name "C:\Users\Documents\KREDIETMAP\VOORBLADKREDIETDOSSIER.pdf"_
As "C:\Users\Documents\KREDIETMAP\" & LCase(Me.[ACHTERNAAM]_
& " " & Me.[VOORNAAM]) & "\" & (Me.[ACHTERNAAM] & "" & Me.[VOORNAAM])_
& " " & (Forms![KREDIETEN]![KREDIETEN SUBFORMULIER].Form![contractnummer]) & ".pdf"
'het volgende commando voor de zekerheid even laten wachten tot het huidige uitgevoerd is
Do: DoEvents: Loop Until Timer - started >= 10
'het nieuwe pdf document openen zodat de overige documentenkunnen ingescand worden en meteen
'in de correcte map en met de juiste filename gesaved kunnen worden
Application.FollowHyperlink "C:\Users\Documents\KREDIETMAP\" & LCase(Me.[ACHTERNAAM]_
& " " & Me.[VOORNAAM]) & "\" & (Me.[ACHTERNAAM] & "" & Me.[VOORNAAM])_
& " " & (Forms![KREDIETEN]![KREDIETEN SUBFORMULIER].Form![contractnummer]) & ".pdf"
DoCmd.Close acReport, rptName, acSaveNo
End Sub