473,396 Members | 1,921 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Export MS-Access report output

Hi!

I would like to export some MS-Access reports output to pdf.
However, the only possibility offered by Access (afaik) for me to export
formatted output is snp (snapshot) (I use MS-Office XP Prof. 2002 version).
With formatted output I mean the *exactly* output I produce from executing
my report (information is gathered from an ODBC database).

1) Is there a way (e.g. using VBA) for me to export directly in pdf?
2) If not, where can I find a tool for me to convert snp to pdf (or other,
that could be converted to pdf (e.g. MS-Word .doc))?

Thanks in advance,
JC
Nov 13 '05 #1
3 4870

Jorge Cecílio wrote:
Hi!

I would like to export some MS-Access reports output to pdf.
With formatted output I mean the *exactly* output I produce from executing my report (information is gathered from an ODBC database).


Jorge,

I don't know of any Access->PDFers. They may be out there. If you don't
get a good answer here, I would start looking into creating your report
in word, using code or mailmerge to fill in the data. Easy enough to
get a word document into PDF.

Jeremy

Nov 13 '05 #2
Jorge,

This may be a simplistic approach, but I set my default printer to Adobe
Acrobat. When I print the report, it goes to a pdf instead of the
printer... on your alternate idea, you could send the report to a file, and
create a Word document that way, which could then be converted to a pdf
document, but that would likely involve manual intervention.

HTH.

Matt

"Jorge Cecílio" <ce*****@equitubos.pt> wrote in message
news:cn**********@domitilla.aioe.org...
Hi!

I would like to export some MS-Access reports output to pdf.
However, the only possibility offered by Access (afaik) for me to export
formatted output is snp (snapshot) (I use MS-Office XP Prof. 2002
version).
With formatted output I mean the *exactly* output I produce from executing
my report (information is gathered from an ODBC database).

1) Is there a way (e.g. using VBA) for me to export directly in pdf?
2) If not, where can I find a tool for me to convert snp to pdf (or other,
that could be converted to pdf (e.g. MS-Word .doc))?

Thanks in advance,
JC

Nov 13 '05 #3
Download and install Win2PDF (www.win2pdf.com) it's $35 a pop or less. In my
tests it produced smaller pdf files than most other printer drivers. This one
was also one of the few you could print to a pdf file via code only. The code
below prompts the user where to save the pdf file to, but the user does not have
to select the PDF printer prior to generating the pdf file.

Mark
Private Sub cmdPublish_Click()

Call PrepReport("Publish")

End Sub

Private Sub PrepReport(pMode As String)
On Error GoTo Err_cmdReport_Click

'Does some error checking before
Call RunReport(pMode)

Exit_cmdReport_Click:
Exit Sub

Err_cmdReport_Click:
' 2501 - takes care of close event in called report due to no data
If Err.Number <> 2501 Then
MsgBox Err.Description
Resume Exit_cmdReport_Click
End If

End Sub

Private Sub RunReport(pMode As String)
On Error GoTo Err_RunReport
Dim stDocName As String

stDocName = Me.cmbReport
If pMode = "Preview" Then
DoCmd.OpenReport stDocName, acViewPreview
ElseIf pMode = "Publish" Then
strOutputTo = GetPublishPathFilename()
If strOutputTo <> "" Then
If Right(strOutputTo, 3) = "snp" Then
DoCmd.OutputTo acOutputReport, stDocName, "Snapshot Format",
strOutputTo
ElseIf Right(strOutputTo, 3) = "rtf" Then
DoCmd.OutputTo acOutputReport, stDocName, "Rich Text Format",
strOutputTo
ElseIf Right(strOutputTo, 3) = "pdf" Then
Call OutputToPDF(stDocName)
End If
End If
End If

Exit_RunReport:
Exit Sub

Err_RunReport:
If Err.Number <> 2501 Then
MsgBox Err.Description
Resume Exit_RunReport
End If

End Sub

Private Sub OutputToPDF(pstDocName As String)

Dim OrigDefaultPrinter

OrigDefaultPrinter = GetDefaultPrinter
If SetDefaultPrinter("win2PDF") = True Then
SaveSetting "Dane Prairie Systems", "Win2PDF", "PDFFileName",
strOutputTo
DoCmd.OpenReport pstDocName, acNormal
SetDefaultPrinter (OrigDefaultPrinter)
Else
MsgBox "Unable to set default printer to PDF printer (Win2PDF)" & vbCrLf
& "Aborting publishing request.", vbCritical, "PDF Printer Error"
End If

End Sub

=====================================
This code is stored in a Module
=====================================

Option Compare Database
Option Explicit

'***************** Code Start **************
'This code was originally written by Ken Getz.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.
'
' Code courtesy of:
' Microsoft Access 95 How-To
' Ken Getz and Paul Litwin
' Waite Group Press, 1996

Type tagOPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
strFilter As String
strCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
strFile As String
nMaxFile As Long
strFileTitle As String
nMaxFileTitle As Long
strInitialDir As String
strTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
strDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Declare Function aht_apiGetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Boolean

Declare Function aht_apiGetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (OFN As tagOPENFILENAME) As Boolean
Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long

Global Const ahtOFN_READONLY = &H1
Global Const ahtOFN_OVERWRITEPROMPT = &H2
Global Const ahtOFN_HIDEREADONLY = &H4
Global Const ahtOFN_NOCHANGEDIR = &H8
Global Const ahtOFN_SHOWHELP = &H10
' You won't use these.
'Global Const ahtOFN_ENABLEHOOK = &H20
'Global Const ahtOFN_ENABLETEMPLATE = &H40
'Global Const ahtOFN_ENABLETEMPLATEHANDLE = &H80
Global Const ahtOFN_NOVALIDATE = &H100
Global Const ahtOFN_ALLOWMULTISELECT = &H200
Global Const ahtOFN_EXTENSIONDIFFERENT = &H400
Global Const ahtOFN_PATHMUSTEXIST = &H800
Global Const ahtOFN_FILEMUSTEXIST = &H1000
Global Const ahtOFN_CREATEPROMPT = &H2000
Global Const ahtOFN_SHAREAWARE = &H4000
Global Const ahtOFN_NOREADONLYRETURN = &H8000
Global Const ahtOFN_NOTESTFILECREATE = &H10000
Global Const ahtOFN_NONETWORKBUTTON = &H20000
Global Const ahtOFN_NOLONGNAMES = &H40000
' New for Windows 95
Global Const ahtOFN_EXPLORER = &H80000
Global Const ahtOFN_NODEREFERENCELINKS = &H100000
Global Const ahtOFN_LONGNAMES = &H200000

Function TestIt()
Dim strFilter As String
Dim lngFlags As Long
strFilter = ahtAddFilterItem(strFilter, "Access Files (*.mda, *.mdb)", _
"*.MDA;*.MDB")
strFilter = ahtAddFilterItem(strFilter, "dBASE Files (*.dbf)", "*.DBF")
strFilter = ahtAddFilterItem(strFilter, "Text Files (*.txt)", "*.TXT")
strFilter = ahtAddFilterItem(strFilter, "All Files (*.*)", "*.*")
MsgBox "You selected: " & ahtCommonFileOpenSave(InitialDir:="C:\", _
Filter:=strFilter, FilterIndex:=3, Flags:=lngFlags, _
DialogTitle:="Hello! Open Me!")
' Since you passed in a variable for lngFlags,
' the function places the output flags value in the variable.
Debug.Print Hex(lngFlags)
End Function

Function GetOpenFile(Optional varDirectory As Variant, _
Optional varTitleForDialog As Variant) As Variant
' Here's an example that gets an Access database name.
Dim strFilter As String
Dim lngFlags As Long
Dim varFileName As Variant
' Specify that the chosen file must already exist,
' don't change directories when you're done
' Also, don't bother displaying
' the read-only box. It'll only confuse people.
lngFlags = ahtOFN_FILEMUSTEXIST Or _
ahtOFN_HIDEREADONLY Or ahtOFN_NOCHANGEDIR
If IsMissing(varDirectory) Then
varDirectory = ""
End If
If IsMissing(varTitleForDialog) Then
varTitleForDialog = ""
End If

' Define the filter string and allocate space in the "c"
' string Duplicate this line with changes as necessary for
' more file templates.
strFilter = ahtAddFilterItem(strFilter, _
"Access (*.mdb)", "*.MDB;*.MDA")
' Now actually call to get the file name.
varFileName = ahtCommonFileOpenSave( _
OpenFile:=True, _
InitialDir:=varDirectory, _
Filter:=strFilter, _
Flags:=lngFlags, _
DialogTitle:=varTitleForDialog)
If Not IsNull(varFileName) Then
varFileName = TrimNull(varFileName)
End If
GetOpenFile = varFileName
End Function

Function ahtCommonFileOpenSave( _
Optional ByRef Flags As Variant, _
Optional ByVal InitialDir As Variant, _
Optional ByVal Filter As Variant, _
Optional ByVal FilterIndex As Variant, _
Optional ByVal DefaultExt As Variant, _
Optional ByVal FileName As Variant, _
Optional ByVal DialogTitle As Variant, _
Optional ByVal hWnd As Variant, _
Optional ByVal OpenFile As Variant) As Variant
' This is the entry point you'll use to call the common
' file open/save dialog. The parameters are listed
' below, and all are optional.
'
' In:
' Flags: one or more of the ahtOFN_* constants, OR'd together.
' InitialDir: the directory in which to first look
' Filter: a set of file filters, set up by calling
' AddFilterItem. See examples.
' FilterIndex: 1-based integer indicating which filter
' set to use, by default (1 if unspecified)
' DefaultExt: Extension to use if the user doesn't enter one.
' Only useful on file saves.
' FileName: Default value for the file name text box.
' DialogTitle: Title for the dialog.
' hWnd: parent window handle
' OpenFile: Boolean(True=Open File/False=Save As)
' Out:
' Return Value: Either Null or the selected filename
Dim OFN As tagOPENFILENAME
Dim strFileName As String
Dim strFileTitle As String
Dim fResult As Boolean
' Give the dialog a caption title.
If IsMissing(InitialDir) Then InitialDir = CurDir
If IsMissing(Filter) Then Filter = ""
If IsMissing(FilterIndex) Then FilterIndex = 1
If IsMissing(Flags) Then Flags = 0&
If IsMissing(DefaultExt) Then DefaultExt = ""
If IsMissing(FileName) Then FileName = ""
If IsMissing(DialogTitle) Then DialogTitle = ""
If IsMissing(hWnd) Then hWnd = Application.hWndAccessApp
If IsMissing(OpenFile) Then OpenFile = True
' Allocate string space for the returned strings.
strFileName = Left(FileName & String(256, 0), 256)
strFileTitle = String(256, 0)
' Set up the data structure before you call the function
With OFN
.lStructSize = Len(OFN)
.hwndOwner = hWnd
.strFilter = Filter
.nFilterIndex = FilterIndex
.strFile = strFileName
.nMaxFile = Len(strFileName)
.strFileTitle = strFileTitle
.nMaxFileTitle = Len(strFileTitle)
.strTitle = DialogTitle
.Flags = Flags
.strDefExt = DefaultExt
.strInitialDir = InitialDir
' Didn't think most people would want to deal with
' these options.
.hInstance = 0
'.strCustomFilter = ""
'.nMaxCustFilter = 0
.lpfnHook = 0
'New for NT 4.0
.strCustomFilter = String(255, 0)
.nMaxCustFilter = 255
End With
' This will pass the desired data structure to the
' Windows API, which will in turn it uses to display
' the Open/Save As Dialog.
If OpenFile Then
fResult = aht_apiGetOpenFileName(OFN)
Else
fResult = aht_apiGetSaveFileName(OFN)
End If

' The function call filled in the strFileTitle member
' of the structure. You'll have to write special code
' to retrieve that if you're interested.
If fResult Then
' You might care to check the Flags member of the
' structure to get information about the chosen file.
' In this example, if you bothered to pass in a
' value for Flags, we'll fill it in with the outgoing
' Flags value.
If Not IsMissing(Flags) Then Flags = OFN.Flags
ahtCommonFileOpenSave = TrimNull(OFN.strFile)
Else
ahtCommonFileOpenSave = vbNullString
End If
End Function

Function ahtAddFilterItem(strFilter As String, _
strDescription As String, Optional varItem As Variant) As String
' Tack a new chunk onto the file filter.
' That is, take the old value, stick onto it the description,
' (like "Databases"), a null character, the skeleton
' (like "*.mdb;*.mda") and a final null character.

If IsMissing(varItem) Then varItem = "*.*"
ahtAddFilterItem = strFilter & _
strDescription & vbNullChar & _
varItem & vbNullChar
End Function

Private Function TrimNull(ByVal strItem As String) As String
Dim intPos As Integer
intPos = InStr(strItem, vbNullChar)
If intPos > 0 Then
TrimNull = Left(strItem, intPos - 1)
Else
TrimNull = strItem
End If
End Function
'************** Code End *****************


On Mon, 15 Nov 2004 14:11:49 -0000, "Jorge Cecílio" <ce*****@equitubos.pt>
wrote:
Hi!

I would like to export some MS-Access reports output to pdf.
However, the only possibility offered by Access (afaik) for me to export
formatted output is snp (snapshot) (I use MS-Office XP Prof. 2002 version).
With formatted output I mean the *exactly* output I produce from executing
my report (information is gathered from an ODBC database).

1) Is there a way (e.g. using VBA) for me to export directly in pdf?
2) If not, where can I find a tool for me to convert snp to pdf (or other,
that could be converted to pdf (e.g. MS-Word .doc))?

Thanks in advance,
JC


Nov 13 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Benny Ng | last post by:
Hi,All, Export Method: ------------------------------------------------------------------------- strFileNameExport = "Results" Response.Clear() Response.Buffer = True...
0
by: Max Mayer | last post by:
Hello everybody, I have implemented a windows form in C# .NET to export data from a listbox to Excel. I work on a Windows XP machine with Office 97 and .NET framework 1.1 SDK installed. I use...
0
by: Max Mayer | last post by:
Hello everybody, I have implemented a windows form in C# .NET to export data from a listbox to Excel. I work on a Windows XP machine with Office 97 and .NET framework 1.1 SDK installed. I use...
1
by: Danny Ni | last post by:
Hi, Our company has a pretty large Intranet application, it has about 200 reports that mostly utilize xml and xsl to generate HTML format. We like another option to do the reporting,...
2
by: Siu | last post by:
Hi, I use the following code to export and import a file Excel from resp. into a Web page with the following code: //EXPORT Response.Clear(); Response.Buffer = true; Response.ContentType =...
13
by: Hemant Sipahimalani | last post by:
The following piece of code is being used to export HTML to excel. HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"...
3
by: Amirallia | last post by:
Hello Here is my code to export a datagrid to Excel, it's work but the no ASCII caracter are not correctly exported (for example : caracter "é" ) Response.Clear() Response.Buffer = True ...
2
by: Chia Lee Lee | last post by:
Hi , I have no idea on how to export data to Ms Excel 2000. I have a screen which contain a check box list that allow user to select which fields to be exported to MS Excel. When user checked on...
0
by: Pradnya Patil | last post by:
Hi , I need to export some of the reports to MS EXCEL & MS WORD in a WEB APPLICATION.I also need to LOCK some of the Columns in EXCEL-sheet.Right now I need to run the Interoperability...
0
by: mahesh123 | last post by:
Hi Folks, How can i export the data from the MSFlexGrid to the MS Open Office Excel in VB 6.0? I Can Know how to export data from the MSFlexgrid to the MS Office Excel. Please Help me regarding...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.