Beste allemaal,
Ik zit al een tijdje te klooien met een macro om de records in een rapport als individuele Pdf's op te slaan.
Het gekke is dat de macro de ene keer helemaal naar behoren werkt, maar dat andere keren de macro stop op de DoCmd.OutputTo met de foutmelding "Fout 2501 tijdens uitvoering: De actie OutputTo is geannuleerd"
Het aantal records dat wel goed gaat is steeds de verschillend, soms stopt hij bijvoorbeeld al na 3 records en andere keer bijvoorbeeld 20 en soms loopt hij ook gewoon door alle records heen, in dit geval 42 stuks.
Ik heb vergelijkbare vragen gevonden in forums, maar eigenlijk nergens de oplossing.
Wat ik ontdekt heb, is dat als ik na de error Foutopsporing kies en dan weer op Play druk, hij gewoon weer zonder problemen doorgaat. Daardoor heb ik het idee dat hij niet altijd genoeg tijd heeft, vandaar alle DoEvents in de code. Maar dit helpt dus niet. Heeft iemand een idee hoe ik kan zorgen dat hij pas OutputTo doet op het moment dat hij er klaar voor is? Of is dat het probleem misschien helemaal niet?
Jullie hulp in deze wordt erg gewaardeerd
Onderstaand de code:
Ik zit al een tijdje te klooien met een macro om de records in een rapport als individuele Pdf's op te slaan.
Het gekke is dat de macro de ene keer helemaal naar behoren werkt, maar dat andere keren de macro stop op de DoCmd.OutputTo met de foutmelding "Fout 2501 tijdens uitvoering: De actie OutputTo is geannuleerd"
Het aantal records dat wel goed gaat is steeds de verschillend, soms stopt hij bijvoorbeeld al na 3 records en andere keer bijvoorbeeld 20 en soms loopt hij ook gewoon door alle records heen, in dit geval 42 stuks.
Ik heb vergelijkbare vragen gevonden in forums, maar eigenlijk nergens de oplossing.
Wat ik ontdekt heb, is dat als ik na de error Foutopsporing kies en dan weer op Play druk, hij gewoon weer zonder problemen doorgaat. Daardoor heb ik het idee dat hij niet altijd genoeg tijd heeft, vandaar alle DoEvents in de code. Maar dit helpt dus niet. Heeft iemand een idee hoe ik kan zorgen dat hij pas OutputTo doet op het moment dat hij er klaar voor is? Of is dat het probleem misschien helemaal niet?
Jullie hulp in deze wordt erg gewaardeerd
Onderstaand de code:
Code:
Sub Vooschotfakturen_opslaan()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim MyFileName As String
Dim mypath As String
Dim temp As String
Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT [Faktuurnr], [Kontraktnr], [DebiteurNaam], [Faktuurdatum] FROM [Voorschotfakturen]", dbOpenSnapshot)
DoCmd.OpenReport "Voorschotfaktuur", acViewReport
Do While Not rs.EOF
DoEvents
If Dir(CurrentProject.Path & "\" & rs("Kontraktnr") & " - " & rs("DebiteurNaam") & "\", vbDirectory) = Empty Then MkDir CurrentProject.Path & "\" & rs("Kontraktnr") & " - " & rs("DebiteurNaam") & "\"
DoEvents
mypath = CurrentProject.Path & "\" & rs("Kontraktnr") & " - " & rs("DebiteurNaam") & "\"
temp = rs("Faktuurnr")
MyFileName = rs("Faktuurnr") & ";" & rs("Faktuurdatum") & ".PDF"
DoEvents
With Reports!Voorschotfaktuur
.FilterOn = False
.Filter = "[Faktuurnr]='" & temp & "'"
.FilterOn = True
End With
DoEvents
'DoCmd.PrintOut , , , , 1
DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
DoEvents
rs.MoveNext
Loop
DoCmd.ShowAllRecords
DoCmd.Close acReport, "Voorschotfaktuur"
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub