=========
QUESTION
———
Using VBA, how do I export a report to PDF in Microsoft Access?
=========
ANSWER
———
Access 2010 option of opening report and outputting to PDF using the Access engine, not Adobe Acrobat Printer: see EXAMPLES
———
Other options:
http://www.granite.ab.ca/access/pdffiles.htm
=========
EXAMPLES
———Private Sub SendReports_Click()
Me.CurrentStatus = "Sending Reports..." & vbCrLf & vbCrLf & vbCrLf & "=========" & vbCrLf & Me.CurrentStatus
Me.Repaint
'1010_Report1
'Export to Shared drive
Dim MyFilter As String
Dim MyPath As String
Dim MyFilename As String
MyFilter = ""
MyPath = "S:SystemsReportsReport1"
MyFilename = "Report1.pdf"
'Let's print and save. Once you see it works, you can change True to False so that the file created is not opened after completion.
DoCmd.OpenReport "1010_Report1", acViewPreview, , MyFilter
DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, False
'Let's close our previewed report
DoCmd.Close acReport, "1010_Report1"
'Copy to Q drive as well
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile MyPath & MyFilename, "Q:PRODDATAReportsAllRecip" & MyFilename
'1020_Report2
'Export to Share drive
MyFilter = ""
MyPath = "S:SystemsReportsReport2"
MyFilename = "Report2.pdf"
DoCmd.OpenReport "1020_Report2", acViewPreview, , MyFilter
DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, False
DoCmd.Close acReport, "1020_Report2"
'Copy to Q drive as well
fs.CopyFile MyPath & MyFilename, “Q:PRODDATAReportsAllRecip” & MyFilename
'Clean up!
Set fs = Nothing
Me.CurrentStatus = "Sending Reports: Completed." & vbCrLf & "Placed at: " & vbCrLf & "Q:PRODDATAReportsAllRecip" & vbCrLf & "S:SystemsReports" & vbCrLf & vbCrLf & Me.CurrentStatus
Me.Repaint
End Sub
———
EXAMPLE WITH LOOPING:
Private Sub SendReports_Click()
DoCmd.Hourglass True
DoCmd.SetWarnings False
Set rs = CurrentDb.OpenRecordset(“DistrictList”, dbOpenDynaset, dbReadOnly)
rs.MoveFirst
MyReport = “NameInAccess”
PDFName = “FileName.pdf”
MyPath = “S:SubDir1SubDir2SubDir3”
Me.CurrentStatus = _
“Sending Reports…” & vbCrLf & _
vbCrLf & _
vbCrLf & _
“=========” & vbCrLf & _
Me.CurrentStatus
Me.Repaint
MyCounter = 1
While Not rs.EOF
MyFilter = “[DISTRICT] = ” & rs!DISTRICT
MyPath_inLoop = MyPath & “D” & Format(rs!DISTRICT, “000”)
MyFilename = MyPath_inLoop & PDFName
If Len(Dir(MyPath_inLoop, vbDirectory)) = 0 Then
MkDir MyPath_inLoop
End If
Me.CurrentStatus = _
MyCounter & ” – Sending to District ” & Format(rs!DISTRICT, “000”) & vbCrLf & _
Me.CurrentStatus
Me.Repaint
DoCmd.OpenReport MyReport, acViewPreview, , MyFilter
DoCmd.OutputTo acOutputReport, “”, acFormatPDF, MyFilename, False
DoCmd.Close acReport, MyReport
MyCounter = MyCounter + 1
MyPath_inLoop = “”
rs.MoveNext
Wend
DoCmd.Hourglass False
DoCmd.SetWarnings True
End Sub
=========
APPLIES TO / KEY WORDS
———
Microsoft Access
PDF
VBA
Report
Export
PDF Convert
Convert to PDF
=========
REF
———
http://social.msdn.microsoft.com/Forums/en/isvvba/thread/bf5dc54a-9c39-42e7-a175-2984825a60be
—
http://www.anysitesupport.com/access-export-report-to-pdf-using-vba/
http://anySiteHosting.com