[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

MS Access vba Print  PDF First page only

Posted on 2017-05-16
16
Medium Priority
?
100 Views
Last Modified: 2017-05-19
Hi, I have this code below works fine BUT the problem is; it's doing PDF for all the pages, what I need to do is to make PDF only for the first page  

Private Sub BtnPdf_Click()
Dim FileName As String
Dim FilePath As String
Dim inStkN As Integer
Dim frm As Form
Set frm = Screen.ActiveForm
inStkN = Me.StkN
FileName = "Transf-" & inStkN
FilePath = "C:\Users\orly\Desktop\FolderName\"
    frm.Filter = "StkID = " & frm.StkID
    frm.FilterOn = True
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.OutputTo acOutputForm, "Msg_FrmC", acFormatPDF, FilePath & FileName & ".pdf", True
    frm.FilterOn = False
End Sub
0
Comment
Question by:Ronald Malk
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 7
16 Comments
 
LVL 53

Expert Comment

by:Rgonzo1971
ID: 42136520
HI,

One way would be to have a pdf printer and then use
DoCmd.PrintOut acPages, 1, 1

Open in new window

Caveat:
The report needs to be opened before printing

Regards
0
 

Author Comment

by:Ronald Malk
ID: 42136532
Thanks for the reply, Can you please add it for me in my code that's what I did but I'm having error
Private Sub BtnPdf_Click()
Dim FileName As String
Dim FilePath As String
Dim inStkN As Integer
Dim frm As Form
Set frm = Screen.ActiveForm
inStkN = Me.StkN
FileName = "Transf-" & inStkN
FilePath = "C:\Users\orly\Desktop\FolderName\"
    frm.Filter = "StkID = " & frm.StkID
    frm.FilterOn = True
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.PrintOut acPages, 1, 1, "Msg_FrmC", acFormatPDF, FilePath & FileName & ".pdf", True   '<<Error here
    frm.FilterOn = False
End Sub
0
 
LVL 53

Expert Comment

by:Rgonzo1971
ID: 42136535
What is the name of your pdf printer?
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 

Author Comment

by:Ronald Malk
ID: 42136544
looks like  I'm stuck with your question, Do not know how to find out, but I can tell that I have installed in my computer Acrobat reader DC I don't know if that helps?
0
 
LVL 53

Expert Comment

by:Rgonzo1971
ID: 42136551
Nope
0
 

Author Comment

by:Ronald Malk
ID: 42136558
For some reason it's not listed it the devices list, I'll do some googling hopefully find why not there, but for now it seems that I have to wait till I find out the name of the PDf printer in my PC
0
 
LVL 53

Expert Comment

by:Rgonzo1971
ID: 42136559
You will probably have to install it (it will be a separate software)
0
 

Author Comment

by:Ronald Malk
ID: 42136564
I installed one called PDFCreator under propery comment it says "eDoc Printer"
0
 
LVL 53

Accepted Solution

by:
Rgonzo1971 earned 2000 total points
ID: 42136582
then try
Private Sub BtnPdf_Click()
Dim FileName As String
Dim FilePath As String
Dim inStkN As Integer
strPrinter = "eDoc Printer"
Dim frm As Form
Set frm = Screen.ActiveForm
Dim strPrinter As String
strPrinterPDF = "eDoc Printer"
inStkN = Me.StkN
FileName = "Transf-" & inStkN
FilePath = "C:\Users\orly\Desktop\FolderName\"
Set Application.Printer = Application.Printers(strPrinterPDF)
DoCmd.OpenReport "Msg_FrmC", acViewPreview, , "StkID = " & frm.StkID
DoCmd.PrintOut acPages, 1, 1
DoCmd.Close acReport, "Msg_FrmC"
Set Application.Printer = Nothing
End Sub

Open in new window

0
 

Author Comment

by:Ronald Malk
ID: 42136669
Please have a look at What I did ,, I'm having Error in this line
Set Application.Printer = Application.Printers(strPrinterPDF)

Dim FileName As String
Dim FilePath As String
Dim inStkN As Integer
Dim strPrinter As String
Dim strPrinterPDF As String
Dim frm As Form

strPrinter = "eDoc Printer"
Set frm = Screen.ActiveForm
strPrinterPDF = "eDoc Printer"
inStkN = Me.StkN
FileName = "Transf-" & inStkN
FilePath = "C:\Users\orly\Desktop\FolderName\"
Set Application.Printer = Application.Printers(strPrinterPDF)
DoCmd.OpenReport "Msg_FrmC", acViewPreview, , "StkID = " & frm.StkID
DoCmd.PrintOut acPages, 1, 1
DoCmd.Close acReport, "Msg_FrmC"
Set Application.Printer = Nothing
0
 
LVL 53

Expert Comment

by:Rgonzo1971
ID: 42136677
Which error?
0
 

Author Comment

by:Ronald Malk
ID: 42136682
in this line
 Set Application.Printer = Application.Printers(strPrinterPDF)
0
 
LVL 53

Expert Comment

by:Rgonzo1971
ID: 42136734
I mean the message
0
 
LVL 53

Assisted Solution

by:Rgonzo1971
Rgonzo1971 earned 2000 total points
ID: 42136802
Is the Printer in the list created by the macro with which name
Sub PrinterList()

For Each prn In Application.Printers
    strRes = strRes & prn.DeviceName & vbCrLf
Next
MsgBox strRes, , "Printers"
End Sub

Open in new window

0
 
LVL 74

Expert Comment

by:Jeffrey Coachman
ID: 42137784
You did not state what data the first page contains, ...or why you only need to print the first page...?
Page 1=Header
Page 2 and over= Details

In any event, ...instead of going through all these machinations, ...why not simply create a report that only displays (or filters) the first page info?
Then all you have to do is create the PDF from that...
The other issue is that you seem to be outputting a "Form" to a PDF:
   DoCmd.OutputTo acOutputForm, "Msg_FrmC", acFormatPDF, FilePath & FileName & ".pdf", True
Try creating a "Report" and the output will look a lot better.
   DoCmd.OutputTo acOutputReport, "Msg_RptC", acFormatPDF, FilePath & FileName & ".pdf", True

JeffCoachman
0
 

Author Comment

by:Ronald Malk
ID: 42141901
Very Sorry for coming back so late,, Thank you for your passion, Finally it worked I reinstall the pdf creator and used your code with one change I replaced the Printers(strPrinterPDF) with Printers(o) and it works, that's it thank you again
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Microsoft Access is a place to store data within tables and represent this stored data using multiple database objects such as in form of macros, forms, reports, etc. After a MS Access database is created there is need to improve the performance and…
If you need a simple but flexible process for maintaining an audit trail of who created, edited, or deleted data from a table, or multiple tables, and you can do all of your work from within a form, this simple Audit Log will work for you.
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question