Rapport opslaan in pdf

  • Onderwerp starter Onderwerp starter RSpan
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

RSpan

Gebruiker
Lid geworden
10 jun 2009
Berichten
166
Hallo allemaal

Middels een knop op een formulier print ik rapporten uit.(zie code)
Mijn vraag is nu de volgende:
Is er een mogelijkheid om vervolgens dit rapport op te slaan in pdf formaat?
Eventueel met een exra knop of, nog mooier, voor of na de printopdracht.
Ik hoop dat iemand een idee heeft

Groet
René:)

Private Sub cmdGenerateReport_Click()
On Error GoTo Err_cmdGenerateReport_Click

Dim stDocName As String
Dim stWhere As String


If Not IsNull(Me.cboSelectName) Then
stWhere = "[OrganisatieID]=" & Me.cboSelectName & " And "
blnTrim = True
End If

If Not IsNull(Me.cboSelectCity) Then
stWhere = stWhere & "[WeekID]=" & Me.cboSelectCity & " And "
blnTrim = True
End If


If blnTrim Then
stWhere = Left(stWhere, Len(stWhere) - 5)
End If

stDocName = "rptVbladOrg"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere

stDocName = "rptfactOrg2"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere

stDocName = "rptfactFrl"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere

stDocName = "rptWkUitbFrl"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere

Exit_cmdGenerateReport_Click:
Exit Sub

Err_cmdGenerateReport_Click:
MsgBox Err.Description
Resume Exit_cmdGenerateReport_Click

End Sub
 
Pdf

Hoi RSpan,

Dit kan met DoCmd. OutputTo
De onderstaande code zal eerst het rapport printen en dan opslaan om de c-schijf in pdf formaat (office 2007).

Code:
stDocName = "rptVbladOrg"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptVbladOrg.pdf", True

stDocName = "rptfactOrg2"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptfactOrg2.pdf", True

stDocName = "rptfactFrl"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptfactFrl.pdf", True

stDocName = "rptWkUitbFrl"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptWkUitbFrl.pdf", True

Als dit niet werkt, moet je waarschijnlijk nog de invoegtoepassing installeren.
invoegtoepassing

Als je geen office 2007 hebt (en die kans is groot..), dan wordt het een ander verhaal.
Dan moet je een pdf printer installeren en daar code voor maken.
Voorbeeld:
pdf995 printer
 
Als aanvulling op de PDF tip van Greenery: Je kunt ook de gratis PDF printer CutePDF downloaden:

http://www.cutepdf.com/Products/CutePDF/Writer.asp

Deze printer levert dezelfde kwaliteit als pdf995, maar dan zonder hinderlijke reclame banners. Daarom gebruik ik deze dus ik zelf...

Michel
 
Michel thnx voor de aanvulling!
CutePDF is zeker lekkerder voor de ogen, helemaal zonder goede bril. ;)
 
heren

Weer geweldig bedankt voor het delen van jullie kennis.:thumb::thumb:
Ik ga er weer mee aan de slag om het in mijn programma te verwerken.

Met vriendelijke groet:D

René
 
Heren

Er schiet mij toch nog een vraag te binnen.
Wanneer ik dit programma (in office 2007) op een pc wil laten draaien zonder office of een andere versie, dan installeer ik eerst de runtime versie van access.

Werkt jouw code ,Creenery80, dan ook of moet ik op dat systeem dan de pdf printer installeren?
Als dat zo is dan kan ik het programma beter zo maken dat het altijd van die pdf printer gebruik maakt.
En hoe moet ik die code dan maken?

Groet
René
 
Microsoft heeft blijkbaar naar zijn klanten geluisterd...
Maar het kan blijkbaar met Runtime ook.... :shocked: echt :shocked:
Volgens MS gewoon beide downloads installeren op elk pc.

Check deze site:
Runtime

klik op linkje: Additional Information.
 
Die MS toch :) ze denken ook overal aan :rolleyes:

Weer bedankt voor de tip, ik ga aan het sleutelen.:)

Groet
René
 
Hoi RSpan,

Dit kan met DoCmd. OutputTo
De onderstaande code zal eerst het rapport printen en dan opslaan om de c-schijf in pdf formaat (office 2007).

Code:
stDocName = "rptVbladOrg"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptVbladOrg.pdf", True

stDocName = "rptfactOrg2"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptfactOrg2.pdf", True

stDocName = "rptfactFrl"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptfactFrl.pdf", True

stDocName = "rptWkUitbFrl"
DoCmd.OpenReport stDocName, AcViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "C:\rptWkUitbFrl.pdf", True

Als dit niet werkt, moet je waarschijnlijk nog de invoegtoepassing installeren.
invoegtoepassing

Als je geen office 2007 hebt (en die kans is groot..), dan wordt het een ander verhaal.
Dan moet je een pdf printer installeren en daar code voor maken.
Voorbeeld:
pdf995 printer

Hoi Greenery80

ik heb jouw voobeeld gebruikt
Code:
stDocName = "rptfactOrg2"
            DoCmd.OpenReport stDocName, acViewNormal, , stWhere
    DoCmd.OutputTo acOutputRaport, stDocName, acFormatPDF, "C:\temp\rptfactOrg2.pdf", True

ik krijg een foutmelding nl.
"Het object rptfactorg2 kan niet worden gevonden"
het wordt dan ook niet opgeslagen wel geprint.

verder vroeg ik mij af of het mogelijk is om geen bestandsnaam op te geven en dat er naar gevraagt wordt bv.
Code:
stDocName = "rptfactOrg2"
            DoCmd.OpenReport stDocName, acViewNormal, , stWhere
    DoCmd.OutputTo acOutputRaport, stDocName, acFormatPDF, "", True

Het opslaanscherm komt nu inderdaad en vervolgens geef ik de naam op maar opnieuw krijg ik bovenstaande foutmelding

ik hoop dat jij een antwoord hebt
René
 
Huh, wel geprint maar niet in pdf??? Dus de naam van het rapport klopt.
En krijg je de foutmelding bij "rptfactOrg2", kortom de 1e rptVbladOrg gaat goed en dan bij outputto rptfactOrg2 stopt ie...

Mn 1e gedachte is dat je misschien een acPreview moet openen en aan eind een DoCmd.Close. Maar dat verklaard niet waarom de 1e wel goed gaat... Hier zit namelijk geen acPreview in....

Kan je een voorbeeld uploaden, dat werkt wat makkelijker?
 
Huh, wel geprint maar niet in pdf??? Dus de naam van het rapport klopt.
En krijg je de foutmelding bij "rptfactOrg2", kortom de 1e rptVbladOrg gaat goed en dan bij outputto rptfactOrg2 stopt ie...

Mn 1e gedachte is dat je misschien een acPreview moet openen en aan eind een DoCmd.Close. Maar dat verklaard niet waarom de 1e wel goed gaat... Hier zit namelijk geen acPreview in....

Kan je een voorbeeld uploaden, dat werkt wat makkelijker?

Ik heb de eerste even uitgeschakeld omdat dit het voorblad is wat niet opgeslagen hoeft te worden.
 
Dan moet ie toch vast de Preview hebben ivm output (+ stWhere) van het rapport.
Ik was vast iets te snel met mn vorige code...

Uit mn blote hoofd:
Code:
stDocName = "rptfactOrg2"
DoCmd.OpenReport stDocName, acPreView, , stWhere
DoCmd.OpenReport stDocName, acViewNormal, , stWhere
DoCmd.OutputTo acOutputRaport, stDocName, acFormatPDF, "", True
DoCmd.Close
 
pdf

Misschien zit hier een foutje in

DoCmd.OutputTo acOutputRaport, stDocName, acFormatPDF, "", True

Report
 
Ik heb de eerste even uitgeschakeld omdat dit het voorblad is wat niet opgeslagen hoeft te worden.

Ik heb nu ook acViewNormal vervangen door acPreview maar de foutmelding blijft hetzelfde.
met het vreemde resultaat dat hij het bestand niet opslaat.
En met acViewNormal slaat hij het ook niet op maar print het wel goed uit, vreemd niet???

ik ga proberen een voorbeeld neer te zetten maar de test versie is nu wat groot geworden, even uitkleden maar.
I'll be back
 
acOutputReport = acOutputRaport????

Dat zou best eens kunnen....

Het heeft even wat werk gekost, maar eindelijk is het bestand klein genoeg

Open het rapport, er zit 1 klant in en kies vervolgens periode 35-36.
klik dan op print

ik ben benieuwd wat hij bij jou doet of niet doet.

hij vraagt om de bestandsnaam voor de pdf, dat is ok,:) hij print,, ook prettig:thumb: maar vervolgens krijg ik een foutmelding :(en blijkt hij het bestand niet opgeslagen te hebben.:mad:

ik hoop dat je de fout vindt

mvg
René
 

Bijlagen

Er staat nog steeds het volgende in de code van jouw db:

Code:
DoCmd.OutputTo acOutputR[U][B][COLOR="Red"]a[/COLOR][/B][/U]port, stDocName, acFormatPDF, "", True

Dit moet zijn:
Code:
DoCmd.OutputTo acOutputR[COLOR="Red"]e[/COLOR]port, stDocName, acFormatPDF, "", True

Pletter kan blijkbaar zeer goed lezen...
Ik heb er echt wel 10 keer overheen gelezen.

Ik heb hem alvast ff aangepast.
Ik heb ook wat gedaan aan de uitlijning van je code... Kon niet goed zien waar een If statement eindigde.
Ik heb tevens printen (acViewNormal) even uitgezet. Zonde voor t papier. :) Dit moet je dus weer even aanzetten, door teken: ' te verwijderen.
Onnodige code weer even verwijderd (Preview en Close)
En je db staat nu standaard op comprimeren bij sluiten.

Ik heb verder overigens niet gekeken naar de rest van je db.
Ik ben ook net pas terug van een verjaardag.
 

Bijlagen

Er staat nog steeds het volgende in de code van jouw db:

Code:
DoCmd.OutputTo acOutputR[U][B][COLOR="Red"]a[/COLOR][/B][/U]port, stDocName, acFormatPDF, "", True

Dit moet zijn:
Code:
DoCmd.OutputTo acOutputR[COLOR="Red"]e[/COLOR]port, stDocName, acFormatPDF, "", True

Pletter kan blijkbaar zeer goed lezen...
Ik heb er echt wel 10 keer overheen gelezen.

Ik heb hem alvast ff aangepast.
Ik heb ook wat gedaan aan de uitlijning van je code... Kon niet goed zien waar een If statement eindigde.
Ik heb tevens printen (acViewNormal) even uitgezet. Zonde voor t papier. :) Dit moet je dus weer even aanzetten, door teken: ' te verwijderen.
Onnodige code weer even verwijderd (Preview en Close)
En je db staat nu standaard op comprimeren bij sluiten.

Ik heb verder overigens niet gekeken naar de rest van je db.
Ik ben ook net pas terug van een verjaardag.

Hoi Greenery80

Het ziet er allemaal prachtig uit :) en wanneer ik de ' ervoor laat staan functioneert het prima.
Helaas als ik de ' voor de regel “ DoCmd.OpenReport stDocName, acViewNormal, , stWhere “weg haal gaat het mis.

De bedoeling is dat door selectie in 2 Cboxen een rapport geprint en opgeslagen wordt.

Code:
Private Sub cmdReset_Click()
    Me.cboSelectName = Null
    Me.cboSelectCity = Null
   
End Sub

Private Sub cmdGenerateReport_Click()
    On Error GoTo Err_cmdGenerateReport_Click

    Dim stDocName As String
    Dim stWhere As String
       
          If IsNull(Me.cboSelectName) Then
            MsgBox "U moet nog een keuze maken"
         Else
          If IsNull(Me.cboSelectCity) Or IsNull(Me.cboSelectName) Then
            MsgBox "U moet nog een keuze maken"
        Else
    
        If Not IsNull(Me.cboSelectName) Then
            stWhere = "[OrganisatieID]=" & Me.cboSelectName & " And "
            blnTrim = True
        End If

        If Not IsNull(Me.cboSelectCity) Then
            stWhere = stWhere & "[WeekID]=" & Me.cboSelectCity & " And "
            blnTrim = True
        End If
 
        If blnTrim Then
            stWhere = Left(stWhere, Len(stWhere) - 5)
        End If
    
            stDocName = "rptVbladOrg"
            'DoCmd.OpenReport stDocName, acViewNormal, , stWhere
    
                stDocName = "rptfactOrg2"
                DoCmd.OpenReport stDocName, acViewNormal, , stWhere
                DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "", True
                          
                stDocName = "rptfactFrl"
                DoCmd.OpenReport stDocName, acViewNormal, , stWhere
                DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "", True
            
                stDocName = "rptWkUitbFrl"
                DoCmd.OpenReport stDocName, acViewNormal, , stWhere
                DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "", True
            End If
          End If
        
Exit_cmdGenerateReport_Click:
    Exit Sub

Err_cmdGenerateReport_Click:
    MsgBox Err.Description
    Resume Exit_cmdGenerateReport_Click

End Sub

Als ik de regel “ DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "", True “ weg laat dan werkt het prima en wordt er een rapport volgens de selectiecriterium geprint.
Als ik deze regel plaats dat wordt het hele jaar geprint en blijkt dus de selectiecriteria niet meer te werken.
Ik begrijp er niets van, ik hoop dat jij enig licht op de zaak kunt werpen.

Mvg
René
 
Dit is echt grappig... Mn eerste gedachte klopte dus.

Dan moet ie toch vast de Preview hebben ivm output (+ stWhere) van het rapport.

Kortom je moet wel een Preview en Close in je code hebben staan.
Op zich ook wel logisch na het printen is het rapport gesloten en zijn dus de selectiecriteria leeg.

Dus wederom:

Code:
stDocName = "rptfactOrg2"
DoCmd.OpenReport stDocName, acPreView, , stWhere
DoCmd.OpenReport stDocName, acViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "", True
DoCmd.Close

Als je wel de Preview wel wilt zien: de DoCmd.Close verwijderen.

Veel suc6.
 
Dit is echt grappig... Mn eerste gedachte klopte dus.



Kortom je moet wel een Preview en Close in je code hebben staan.
Op zich ook wel logisch na het printen is het rapport gesloten en zijn dus de selectiecriteria leeg.

Dus wederom:

Code:
stDocName = "rptfactOrg2"
DoCmd.OpenReport stDocName, acPreView, , stWhere
DoCmd.OpenReport stDocName, acViewNormal, , stWhere
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, "", True
DoCmd.Close

Als je wel de Preview wel wilt zien: de DoCmd.Close verwijderen.

Veel suc6.


Het werkt nu wat betreft de selectiecreteria, nu wordt niet meer de hele dbase afgedrukt.:D
Kun/wil je me iets uitleggen over de code, ik begrijp niet waarom de acPreview regel er nu bij moet, wat doet deze nu.
Je geeft aan dat na het printen de selectiecreteria weg zijn, is het dan niet voldoende om de pdf regel voor de print regel te zetten, of zeg ik nu hele domme dingen?:o

Ik zit nu nog met één punt nl. dat de pdf documenten open blijven staan.
Ik moet ze nu handmatig sluiten.
Is het mogelijk om dat ook automatisch te laten gebeuren?
mvg
René
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan