Brian is preparing a workbook that will be used by people without extensive Excel experience. He would like a way to be able to have them print to a PDF file with ease, perhaps with the click of a button. He has no control over what version of Excel or what operating system the people have, but he wonders if there is a way to accomplish this type of output.
Printing to PDF is relatively easy if your users are using Windows 10, as it includes (finally!) a native PDF printer driver. Unfortunately, Brian indicates that he has no control over what operating system his users have, which means he can’t assume that they have the native PDF output capabilities introduced in Windows 10.
Fortunately, Excel has included (since at least Excel 2007) a way to export to a PDF file. All you need to do is choose Save As (easiest way is to press F12) and then, using the Save As Type drop-down list, choose PDF. The output is saved, automatically, in a PDF file.
If you prefer a single-button approach, you could instruct your users to add a rather esoteric tool to the Quick Access Toolbar:
- Display the Excel Options dialog box. (In Excel 2007 click the Office button and then click Excel Options. In Excel 2010 and later versions, display the File tab of the ribbon and then click Options.)
- At the left side of the dialog box click Customize (Excel 2007) or Quick Access Toolbar (Excel 2010 or later versions). (See Figure 1.)
- Use the Choose Commands From drop-down list to choose All Commands.
- In the list of commands, choose Publish as PDF or XPS.
- Click the Add button. The command is copied to the right side of the screen.
- Click OK.
Figure 1. The Quick Access Toolbar area of the Excel Options dialog box.
This new tool, when clicked, displays a dialog box that looks very similar to the Save As dialog box, except the settings are all correct for “publishing” as a PDF file.
You could also create a macro that performs the same publishing task. The macro is a good approach if you want complete control over what is included in the PDF file that is created.
Sub ExportPDF() Dim sFile As String sFile = Application.DefaultFilePath & "" & _ ActiveWorkbook.Name & ".pdf" Sheets("Sheet1").Select ActiveSheet.PageSetup.PrintArea = "D6:K57" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:= sFile, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:= True End Sub
The macro puts together a filename into the sFile variable; you should change this as desired. The macro then specifies a print area of what should be included in the PDF file. In this case, it is the range D6:K57 on Sheet1. You’ll obviously want to change this to meet your needs of what you want included.
If you decide to go the macro route, you could add a button to your workbook to run the macro, making it easy for your users to create the PDF output you need.