Question

Access Report to PDF without Save As Dialog

Asked by: DoeSmith

I have an Access database that I have created a form where the user can check multiple reports and when I press a button I need it to export each as a PDF. Here's the catch. I want the user to be able to select a folder location on the form, and when the button is pressed I need code or a macro to specify the path and a new filename, and save each report respectively without prompting the "Save PDF As" dialog.

Example:
User puts a check next to rpt1 and rpt2, and enters s:\jobNumber\ in the path location.
they click the Create PDF Button
Each report is automatically created and saved as shown below without any additional interaction from the user:
 s:\jobNumber\RenamedReport1.pdf
s:\jobNumber\RenamedReport2.pdf

I do not want to modify registry entries or have to relly on outside .dll files to do this. There are shared databases that are used by multiple users, so the solution must be self contained...

Hopefully all that makes sense. Any ideas?

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-08-14 at 11:34:29ID24653887
Tags

Access

,

VBA

,

PDF

Topics

Microsoft Access Database

,

Access Reports

,

Microsoft Office Suite

Participating Experts
2
Points
500
Comments
22

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. PDF?
    If i create a pdf file with Acrobat 6.o will it open on reader 4.0, in other words is it back word compatible. IfI create catalogs for print in quark express or adobe indesign with high resulotion images will i be able to save these out at a high enough resolution for prin...
  2. Macro to open browse dialog that will insert a PDF as an em…
    Is there a macro that will re-produce these steps: Insert > Object > Select "Create from file" tab > Check "Display as icon" > Open "Browse" If I can bring responders to the browse window with one click, I might have a shot a...
  3. PDF Viewer
    Hi, Anyone know a good "FREE" PDF viewer component for Delphi 7.0 ? I just want to be able to view a PDF file inside a Delphi Form. Thanks.

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: puppydogbuddyPosted on 2009-08-14 at 12:13:53ID: 25101396

Assuming you are using the Access 2007 pdf add-in, all you need to do is store the Access report name and jobNumber in variables, for example strAccessRptName and strJob as shown in folllowing code behind a button.

Private Sub YourButton_Click()
DoCmd.OutputTo acOutputReport, strAccessRptName, acFormatPDF, "s:\" & strJob & strAccessRptName & ".pdf", False
End Sub

 

by: DoeSmithPosted on 2009-08-14 at 12:38:28ID: 25101611

Unfortunately I'm on Access 2003 and that won't work as is. Is there a way to get this to work with 2003?

 

by: puppydogbuddyPosted on 2009-08-14 at 13:39:06ID: 25102131

I don't know if this will work. If it doesn't, please post your code.

Private Sub PrintPdf_Click()
Dim strPdfWriterPath As String
Dim strFilePath As String
Dim strJob As String
Dim strAccessRptName As String
'Open File
'strPdfWriterPath is the path to the application object (your pdf writer e.g. adobe.exe)
'strFilePath is the path to the pdf file

strPdfWriterPath = "C:\Program Files\Adobe\Acrobat 5.0\Acrobat\Acrobat.exe"
strFilePath = "s:\" & strJob & strAccessRptName & ".pdf"


Call Shell(strPdfWriterPath & " " & strFilePath, vbMaximizedFocus)

End Sub

 

by: puppydogbuddyPosted on 2009-08-14 at 14:43:24ID: 25102611

oops! left out the variable assignments for the Job and ReportName

Private Sub PrintPdf_Click()
Dim strPdfWriterPath As String
Dim strFilePath As String
Dim strJob As String
Dim strAccessRptName As String
'Open File
'strPdfWriterPath is the path to the application object (your pdf writer e.g. adobe.exe)
'strFilePath is the path to the pdf file

strPdfWriterPath = "C:\Program Files\Adobe\Acrobat 5.0\Acrobat\Acrobat.exe"
strJob = Me.txtJob   'assumed textbox on report launcher
strAccessRptName = Me.txtjRptTitle
strFilePath = "s:\" & strJob & strAccessRptName & ".pdf"


Call Shell(strPdfWriterPath & " " & strFilePath, vbMaximizedFocus)

End Sub

 

by: boag2000Posted on 2009-08-15 at 00:25:21ID: 25104458

DoeSmith,
1. You have asked a question that requires that you be familiar with VBA coding

2. <I'm on Access 2003>
The you need to invest in one or the may "Convert to PDF" utilities that there are out there.
I use this:
http://www.lebans.com/reporttopdf.htm

3. <User puts a check next to rpt1 and rpt2>
A multiselect Listbox is the more accepted method of doing this, because it require no modifications when reports are Added, Renames, Deleted, ...etc

4. <enters s:\jobNumber\ in the path location.>
The problem with this is that a lot of users will simply type: C:\SomeFolder", forgetting the ending "\"
(thinking that is is presumed, or does not matter)
        c:\YourFolder
....is *Not* the same as:
        c:\YourFolder\
Entering "c:\YourFolder" will result in a file in the c: root folder named "YourFolderYourReportName.pdf"
So now (in addition to *everything* else), you must add validation for the ending "\".

Here is a fully functional sample.

You will have to modify it to work in your database.

You also must download the Dll from the link and install it into the same folder as the DB will reside in.
http://www.lebans.com/DownloadFiles/UpdatedDLLs.zip

 

by: DoeSmithPosted on 2009-08-17 at 06:39:28ID: 25114244

puppydogbuddy:
I'm getting a runtime error on the call shell line of code.

 

by: DoeSmithPosted on 2009-08-17 at 06:45:09ID: 31615927

Not the ideal solution, but it works. It would be nice to be able to do this without having to add the outside .dll files, but from all the research I've done, I think this may be the only feasable option in 2003. Thanks!

 

by: puppydogbuddyPosted on 2009-08-17 at 06:47:32ID: 25114345

What was the error #?  That code works with Version 5 of Acrobat.  Do you have the correct path to Acrobat?  What version of acrobat do you have?

 

by: DoeSmithPosted on 2009-08-17 at 11:02:04ID: 25116731

The path was incorrect, but when I fixed it, it opens Acrobat, but gives me the error file not found.

I'm on acrobat 8.

here's the code I'm using to test it:

Private Sub Command50_Click()

Dim strPdfWriterPath As String
Dim strFilePath As String
Dim strJob As String
Dim strAccessRptName As String
'Open File
'strPdfWriterPath is the path to the application object (your pdf writer e.g. adobe.exe)
'strFilePath is the path to the pdf file

strPdfWriterPath = "C:\Program Files\Adobe\Acrobat 8.0\Acrobat\Acrobat.exe"
strJob = "999"   'assumed textbox on report launcher
strAccessRptName = "CA Letter 05-09"
strFilePath = "c:\" & strJob & strAccessRptName & ".pdf"


Call Shell(strPdfWriterPath & " " & strFilePath, vbMaximizedFocus)


End Sub

 

by: puppydogbuddyPosted on 2009-08-17 at 16:18:54ID: 25119194

Apparently, the Shell command is looking for the file to open it, but can't find it because it has not been saved.  Try the code as modifiied and see if it works.  I think you might need to set a vb library reference to Accrobat.

Private Sub Command50_Click()

'Declare variables representing the objects to be manipulated
Dim PDFdoc As New AcroPDDoc
Dim strPdfWriterPath As String
Dim strFilePath As String
Dim strJob As String
Dim strAccessRptName As String
'___________________________________________________
'initialize the object variables
'______________________________________________________
'strPdfWriterPath is the path to the application object (your pdf writer e.g. adobe.exe)
'strFilePath is the path to the pdf file

strPdfWriterPath = "C:\Program Files\Adobe\Acrobat 8.0\Acrobat\Acrobat.exe"
strJob = "999"   'assumed textbox on report launcher
strAccessRptName = "CA Letter 05-09"
strFilePath = "c:\" & strJob & strAccessRptName & ".pdf"

'_________________________________
'save, then open the report created in Access to pdf
'_____________________________________________

PDFdoc.Save & " " & strFilePath
Call Shell(strPdfWriterPath & " " & strFilePath, vbMaximizedFocus)

End Sub

 

by: DoeSmithPosted on 2009-08-18 at 05:13:18ID: 25122329

How do I set the VB Library reference. I tried the code and am getting "Compile Error: User-Defined type not defined" on the line:
Dim PDFdoc As New AcroPDDoc

 

by: DoeSmithPosted on 2009-08-18 at 05:33:26ID: 25122471

Ok, I think we're getting closer. I went to tools - references in the code editor and added:
Adobe Acrobat 8.0 Type Library
Acrobat Access 3.0 Type Library
Acrobat Distiller
Adobe PDFMaker for Office

Now I'm getting a Syntax Error on
PDFdoc.Save & " " & strFilePath

 

by: puppydogbuddyPosted on 2009-08-18 at 05:43:57ID: 25122555

Place your form in design view, then go to the code editor window.  Once you are in the vb code editor, go to the Access command menu and select Tools>references.  First, look at the screen and see if it says if there are any missing references; then scroll down the reference list for the Adobe 8  reference, select it and select ok.

 

by: puppydogbuddyPosted on 2009-08-18 at 05:56:47ID: 25122666

go to the error line in the code editor, see if you can make use of Intellisense  by typing PDFdoc.Save   and see if it tells you the syntax/poperties are required to execute the save command, and modify your variable strings accordingly. If PDFdoc.Save does not exist, try PDFdoc.SaveAS...........

 

by: puppydogbuddyPosted on 2009-08-18 at 06:12:49ID: 25122794

Just for kicks, change the following line of my code:
          PDFdoc.Save & " " & strFilePath

to this:
        PDFdoc.Save(strFilePath)
or this:
       PDFdoc.Save strFilePath

 

by: DoeSmithPosted on 2009-08-18 at 06:48:14ID: 25123114

When I try that I get a type mismatch. I did some digging and saw someone's code with it having a 1, before the filename like this:
PDFdoc.Save 1, strFilePath

When I do that I get a file not found in acrobat. If I put it like this:
PDFdoc.Save (1, strFilePath)
I get a syntax error. I'm not getting any intellisence

 

by: DoeSmithPosted on 2009-08-18 at 06:54:10ID: 25123177

This is where I am so far. I also modified he 1st 2 lines of code:

Private Sub Command50_Click()

'Declare variables representing the objects to be manipulated
Dim PDFdoc As Object
Set PDFdoc = New AcroPDDoc
'Dim PDFdoc As New AcroPDDoc
Dim strPdfWriterPath As String
Dim strFilePath As String
Dim strJob As String
Dim strAccessRptName As String
'___________________________________________________
'initialize the object variables
'______________________________________________________
'strPdfWriterPath is the path to the application object (your pdf writer e.g. adobe.exe)
'strFilePath is the path to the pdf file

strPdfWriterPath = "C:\Program Files\Adobe\Acrobat 8.0\Acrobat\Acrobat.exe"
strJob = "999"   'assumed textbox on report launcher
strAccessRptName = "CA Letter 05-09"
strFilePath = "c:\" & strJob & strAccessRptName & ".pdf"

'_________________________________
'save, then open the report created in Access to pdf
'_____________________________________________
PDFdoc.Save 1, strFilePath
Call Shell(strPdfWriterPath & " " & strFilePath, vbMaximizedFocus)


End Sub

 

by: puppydogbuddyPosted on 2009-08-18 at 07:35:08ID: 25123665

Ok, you've changed to the late binding method for which you will not get intellisense.  That is ok if you can get it to work.  The 1 in the save is the number of pages....I changed to saveas.  Try the code as shown on the code snippet below:


Private Sub Command50_Click()
 
'Declare variables representing the objects to be manipulated
Dim PDFdoc As Object
 
'Dim PDFdoc As New AcroPDDoc        'n/a-used with early binding method
Dim strPdfWriterPath As String
Dim strFilePath As String
Dim strJob As String
Dim strAccessRptName As String
'___________________________________________________
'initialize the object variables
'______________________________________________________
'strPdfWriterPath is the path to the application object (your pdf writer e.g. adobe.exe)
'strFilePath is the path to the pdf file
 
strPdfWriterPath = "C:\Program Files\Adobe\Acrobat 8.0\Acrobat\Acrobat.exe"
strJob = "999"   'assumed textbox on report launcher
strAccessRptName = "CA Letter 05-09"
strFilePath = "c:\" & strJob & strAccessRptName & ".pdf"
 
Set PDFdoc = New AcroPDDoc
'_________________________________
'save, then open the Access report converted to pdf
'_____________________________________________
PDFdoc.SaveAs strFilePath
Call Shell(strPdfWriterPath & " " & strFilePath, vbMaximizedFocus)
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:

Select allOpen in new window

 

by: DoeSmithPosted on 2009-08-18 at 12:46:53ID: 25126837

Runtime error '438'
Object doesn't support this property or method

Flaging the Saveas line of code....

 

by: DoeSmithPosted on 2009-08-18 at 12:48:02ID: 25126853

What is late binding? Can i do it differently and get the intellisence?

 

by: DoeSmithPosted on 2009-08-18 at 12:55:39ID: 25126927

Ok, So I changed the binding so I have intellisencs now. Here are the methods that intellisencs shows for PDFdoc.   (no SaveAs)

AquirePage
ClearFlags
Close
Create
CreateTextSelect
CreateThumbs
CropPages
DeletePages
DeleteThumbs
GetFileName
GetFlags
GetInfo
GetInstanceID
GetJSObject
GetNumPages
GetPageMode
GetPermanantID
InsertPages
MovePage
Open
OpenAVDoc
ReplacePages
Save
SetFlags
SetInfo
SetPageMode

 

by: puppydogbuddyPosted on 2009-08-18 at 14:18:11ID: 25127791

Just got back on-line.  Now that you have intellisense, try typing;
                     PDFdoc.Save As
                            or
                    PDFdoc.Save
                          or
                    PDFdoc.GetFileName strAccessReportName
and see what pops up on intellisense.

Re: early binding, you declare what library files are needed and Access makes them available during the coding phase.  Late binding, Access determines what reference libraries are needed at runtime.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...