Hoe druk ik in Access een pdf-bestand

Status
Niet open voor verdere reacties.

BartSr

Gebruiker
Lid geworden
26 aug 2008
Berichten
240
Ik wilde een reeks bestanden printen middels deze code
For Each varFile In .SelectedItems


, waarbij varfile de naam 1.PDF bevat (om het even simpel te houden. De werkelijke naam is veel langer en bevat o.a het pad naar het bestand
Daarover heb ik 3 vragen:
1. Heeft de basisversie van Windows/Office een Pdf-commando? En zo ja
2, Hoe is het Access commando om varFile af te drukken.En daarna
3. Hoe is het Access commando om varFie te verwijderen/te deleten.
Bart
 
  1. Ik snap niet wat je met een pdf-commando bedoelt. In bijvoorbeeld Word kun je we "opslaan als...." gebruiken en dan kiezen voor PDF.
  2. Zie je vorige vraag. In plaats van Notepad moet je nu het programma aanroepen waarmee je normaliter pdf-bestanden opent. Zoek even uit welke switch (vergelijkbaar met de /P) je moet gebruiken bij dat programma.
  3. Een bestand verwijderen doe je met KILL, gevolgd door de bestandsnaam (inclusief pad). Je kunt ook wildcards gebruiken om meerdere bestanden tegelijkertijd te verwijderen.
 
Dit:
[FONT=&quot]
Code:
[/COLOR][COLOR=#2A2A2A]CreateObject("Shell.Application").NameSpace(0).ParseName("Y:\NameofPDF.pdf").InvokeVerb ("Print")[/COLOR][COLOR=#2A2A2A]
Schijnt prima te werken. En hier zou een voorbeeld moeten staan van een API call.
[/FONT]
 
Ad 1: in Access kun je zo’n beetje alles als PDF exporteren; Opslaan Als is natuurlijk een hele rare vergelijking omdat Word totaal anders werkt als Access. En zoals ik kan blijven herhalen: gebruik rapporten om af te drukken. En NIETS anders. Ik snap deze vraag (en de vorige) dus nog steeds niet. In tegenstelling tot Peter steekmug dus ook liefst geen tijd in een (in mijn ogen zinloze) oplossing.
 
Wat ik wil weten wat in de basis van Windows wordt geleverd als pdf-printprogramma. Ik kan/zal wel Word hebben, maar ik mag er niet van uitgaan dat elke andere Windowsgebruiker ook over Word beschikt.
En als ik het woord notepad vervang door Word zegt Access dit niet te kennen! Mogelijk moet het volledige pad worden gegeven. Hetzelfde met Edge ofwel Microsoft Edge.exe
 
Vanaf Windows 10 is de default pdf viewer/printer Microsoft Edge
 
Hallo Bart, het wordt misschien eens tijd dat je wat meer vertelt over de context van je vragen. Je vuurt allerlei vragen op ons af die we naar beste vermogen beantwoorden. Telkens lijken die niet te voldoen. Zonder te weten wat je nu echt wilt blijft het koffiedik kijken.
 
Zou dit de code moeten zijn?
Code:
 Shell "Microsoft Edge /P " & varFile
 
Bart, geef nu eens antwoord op onze vragen, zo komen we niet verder :).

Windows
gebruikt een standaard driver voor pdf; als je géén Acrobat Reader hebt geïnstalleerd (en als default programma) dan opent Windows een pdf bestand in Edge, als je er op dubbelklikt. Heb je wél Acrobat Reader, dan zal dát vermoedelijk je default driver zijn voor pdf’s. Maar dat alles staat m.i. los van wat je aan het doen bent.

Jouw pdf bestanden komen uit een bron in Access. Ik zet er goed geld op dat je daar een rapport voor gebruikt, want het is (in mijn ogen: totaal) onzinnig om tabellen/queries te exporteren naar een pdf.

Export bestanden maak je met een doel: afdrukken als er een papieren kopie nodig is (bron: een rapport) of bestanden die je (als pdf bijvoorbeeld) mailt (wederom bron: een rapport). Als een rapport is geëxporteerd naar pdf, is het dus klaar. Geen enkele noodzaak om dat nog af te drukken.
Andere variant: data verzenden, bijvoorbeeld als Excel bestand (xls, cv’s). Data komt meestal uit een query, niet uit een rapport. Dat kán wel, maar ziet er niet uit.

Dus wederom de vraag: waarom wil je die pdf’s afdrukken, en niet het rapport? Makes no sense whatsoever…
 
Oh, Bart, wat krijgen we nu? Je weet toch dat je bij crossposten altijd die links (op beide forums) moet meesturen? Dit is helemaal niet netjes :).
 
Ik geef verder uiteraard in dat andere draadje geen antwoord (overigens dezelfde antwoorden als hier), maar dit:
Code:
[COLOR=#000000]varFile dit is: C:/Users/bku/Boeket/23-08-20-BetHerA.Nunes.pdf[/COLOR]
is volgens mij niet goed. Dat zou zo moeten:

Code:
[COLOR=#000000]varFile = “C:\Users\bku\Boeket\23-08-20-BetHerA.Nunes.pdf”[/COLOR]
 
En om het verhaal compleet te maken: ik heb deze code getest, en er is geen enkel probleem mee.

Code:
            If .Show = True Then                For Each varFile In .SelectedItems
                    Shell "notepad.exe /P " & varFile
                Next

Ik kan het nog zotter maken: ik heb de code erboven, die ik gebruik om de bestanden te selecteren, ook de optie PDF toegevoegd, en dus getest met een aantal PDF bestanden. Verder niets veranderd, dus gewoon de optie Shell Notepad laten staan. En wat denk je? De pdf-jes worden gewoon (en correct) afgedrukt! Nooit geweten dat je met Notepad ook pdf bestanden kunt afdrukken. Niet dat ik dat zou doen overigens, want ik heb ook gewoon Acrobat Reader staan, en dat lijkt mij toch wat veiliger. Maar de code werkt dus, en daar ging de vraag over :).
 
Ik wil Spoolen. Dat is een reeks afdrukken maken zonder per bestand een toestemming te geven.Dus voor een vereniging met 200 leden niet 200 keer [Enter]
1 Doe ik dat met
Code:
Shell "notepad.exe /P " & varFile
, dan krijg ik inderdaad een spooling, maar alleen op elke pagina bagger.
2 Doe ik het met
Code:
Application.FollowHyperlink varFile, True
dan komt er eerst dit scherm
Schermopname (24).png. Het bestand wordt dus wel herkend,
Vervolgens komt dit scherm Schermopname (25).png, Het bestand wordt dus niet herkend!!
Dit lijkt me toch een fout in ACCESS!
Kortom: geen van beiden is de oplossing
 
Toch maar weer terug op het oude nest?

Bij 2 gaat het kennelijk om een pdf-bestand. Als dat bij 1 ook zo is, is het logisch dat je bagger krijgt. Een pdf-bestand afdrukken met notepad gaat natuurlijk niet lukken.
Zoals in #13 al gemeld zit je fout met de slashes; een slash aan het begin klopt ook niet. FollowHyperlink heb je sowieso niets aan. Daarmee open je alleen een bestand.

Verde blijf ik staan achter wat ik in #7 schreef. In afwachting daarvan ga ik in de pauzestand.
 
Ik wil Spoolen.
Voor de zekerheid: ik heb de code dus getest in jouw database, met jouw procedure. En hij werkt gewoon. Wél zelf de bestanden opgehaald met een eigen Filepicker, omdat ik geen bestanden in de database heb staan.

Een pdf-bestand afdrukken met notepad gaat natuurlijk niet lukken.
Nog iemand die slecht leest. NOGMAALS: ik heb de code van Bart geprobeerd, en daar een stoppunt ingezet, omdat ik (uiteraard) ook van mening was dat het niet mogelijk is om met Notepad pdfjes af te drukken. Maar het punt werd genegeerd, en de printer begon als een idioot de pdfjes af te drukken. Perfect.... Moest de lade eruit trekken om het printen te stoppen, want alle gekozen documenten (uiteraard test je met minstens 9 documenten ;)) waren onderweg naar de uitgang. Maar het principe werkt dus gewoon.

Ergens kan ik het mij ook nog wel voorstellen, want je geeft vanuit Notepad een Printopdracht mee. Vermoedelijk doet het programma dus weinig anders dan de aangeboden files gelijk door te sturen. Maar aan de code van Bart mankeert dus NIETS​!!!
 
Nieuwsgierig geworden maar eens de proef op de som genomen en een pdf-bestand via de genoemde methode afgedrukt. En inderdaad ............ 22 pagina's bagger voor een document van één pagina :shocked:
 

Bijlagen

Je hebt helemaal gelijk; ook bij mij was de output niet geweldig :). Was een beetje voorbarig met melden dat de afdruk er correct uitkwam. Toevallig was de eerste pagina dat wel, maar achteraf was dat een pagina van een ouder document dat nog in de spooler bleek te zitten bij een andere (te laat geannuleerde) opdracht.

Dus het verhaal dat je ook met Notepad pdfjes correct kunt afdrukken, klopt voor geen meter. Mea culpa! :o. Overigens blijf ik er verder bij dat de routine klopt, alleen moet je voor pdfjes natuurlijk "acrobat.exe" aanroepen, niet Notepad. En ik weet daar de juiste parameters ook niet van uit het hoofd.

En verder blijft het verhaal natuurlijk staan dat je helemaal geen export vanuit Access moet afdrukken; daar heb je rapporten voor. Maar goed, Bart is daar (hij blijft lang stil) nog steeds niet van overtuigd. Ik heb dus zijn procedure bekeken, en ik blijf erbij dat het (in mijn ogen volslagen) onzinnig is om dit zo te doen.
 
Dit:
[FONT="][COLOR=#2A2A2A] [CODE][/COLOR][COLOR=#2A2A2A]CreateObject("Shell.Application").NameSpace(0).ParseName("Y:\NameofPDF.pdf").InvokeVerb ("Print")[/COLOR][COLOR=#2A2A2A][/CODE]
Schijnt prima te werken. En [URL="https://onedrive.live.com/?cid=44CC60D7FEA42912&id=44CC60D7FEA42912!169"]hier[/URL] zou een voorbeeld moeten staan van een API call.
[/FONT][/COLOR]
Dit werkt ook niet. Foutmelding Objectvariabele of blokvariabele With is niet ingesteld.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan