Easily Printing to PDF

Written by Allen Wyatt (last updated October 4, 2021)
This tip applies to Excel 2007, 2010, 2013, and 2016


9

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:

  1. 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.)
  2. At the left side of the dialog box click Customize (Excel 2007) or Quick Access Toolbar (Excel 2010 or later versions). (See Figure 1.)
  3. Figure 1. The Quick Access Toolbar area of the Excel Options dialog box.

  4. Use the Choose Commands From drop-down list to choose All Commands.
  5. In the list of commands, choose Publish as PDF or XPS.
  6. Click the Add button. The command is copied to the right side of the screen.
  7. Click OK.

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.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (13467) applies to Microsoft Excel 2007, 2010, 2013, and 2016.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Inserting Today's Date

When writing letters, reports, or other date-dependent documents, you need to regularly insert the current date in the ...

Discover More

Highlighting Information Using Shading

Need to draw attention to some text in your document? You can do it by applying some fast and easy shading to your text.

Discover More

Conditional Formatting in PivotTables

Conditional formatting is very powerful, and you can use it to dynamically adjust how your data looks. Excel allows you ...

Discover More

Create Custom Apps with VBA! Discover how to extend the capabilities of Office 2013 (Word, Excel, PowerPoint, Outlook, and Access) with VBA programming, using it for writing macros, automating Office applications, and creating custom applications. Check out Mastering VBA for Office 2013 today!

More ExcelTips (ribbon)

Repeating Rows at the Bottom of a Page

Excel allows you to repeat rows at the top of every page of a printout. If you want to repeat rows at the bottom of every ...

Discover More

Printing Multiple Pages On a Piece of Paper

If you want to save paper on a printout, you might consider printing multiple pages on a single piece of paper. This can ...

Discover More

Defining a Custom Paper Size

Need to print your worksheet on a non-standard paper size? Excel is rather limited in printing to such papers, and here ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is 6 - 6?

2023-10-19 17:08:11

J. Woolley

@Alex
Try this macro:

Sub ActiveSheetAsPDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=("[" & ActiveWorkbook.Name & "]" & ActiveSheet.Name), _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

The PDF file will be saved in the active workbook's folder with a name like [Book1.xlsx]Sheet1.pdf. It will replace any file of the same name. It will open in your PDF viewer when the macro is done.
If your configuration includes the "Microsoft Print to PDF" printer (or something similar), you could also press Ctrl+P and specify that as Printer.


2023-10-19 00:58:00

Alex

Hi guys,

I was wondering if there's any solution for making exporting to PDF a simpler process.

At the moment, the steps I have to take are the following:

- Click 'Save As'
- Click 'PDF'

Then this is the part I want to fix:

- Choose Sheet (instead of workbook) - I want sheet to always be the default
- Choose 'Best for Printing' - I want this to be the default too

Any tips or advice greatly appreciated!


2019-12-15 10:31:09

J. Woolley

@Mahmoud
Try changing from ThisWorkbook.Path to ActiveSheet.Parent.Path


2019-12-15 01:14:09

Mahmoud

Hi all

I have the below macro in my worksheet to save as PDF, but users are complaining that compile error is coming ! can you pls help what could be the problem and how to solve it?


SavePDFCVSF()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\NEW" & " " & Range("E8") & " " & Range("E20") & " " & "ETA" & " " & Range("z63") & " " & "created" & " " & Format(Now, "yyyy-mm-dd hh-mm-ss") & ".pdf", _
OpenAfterPublish:=True
ActiveSheet.Unprotect "999"
Range("fillable_fields").Select
Selection.Locked = True
Selection.FormulaHidden = True
ActiveSheet.Protect "999"
Range("E8").Select

End Sub


2019-11-04 15:17:26

Mike

Hi, I'm stuck with following issue:
I am having a number (up to 500) report diagrams to print a pdf based on an Excel data table where the charts get updated for each row, one by one. See code below:

Sub UpdateChart()
Dim tblResults As ListObject
Dim i As Integer, n As Integer
Dim PrintTo As String

n = 1
i = 1

'PrintTo = "C:\Desktop\"
Set tblResults = Worksheets("AllResults").ListObjects("MrgdResults")

n = tblResults.ListRows.Count
Worksheets("Auswertung").Activate

For i = 1 To n

tblResults.ListRows(i).Range.Copy Destination:=ActiveSheet.Range("rngAllValues")

Worksheets("Report").ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Environ("USERPROFILE") & "\Desktop\SF_Report " & Format(i, "000") & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Next
End Sub

Now the charts in the pdf file(s) get altered as regards the colors and shading, example correct image (see Figure 1 below)
and wrong pdf one (see Figure 2 below)
any suggestions?

Figure 1. good

Figure 2. bad


2019-04-19 16:26:18

Jessica Rivera

hi, I am looking to save multiple tables that are coming from a pivot and i want a macro that will go through a list of product i supply then selects them individually off a pivot and converts it to a pdf. is there a way to create a macro to do that?


2018-05-02 06:02:13

Vishrut

Above Mentioned macro works very fine but it saves file in my documents but what if i want to save pdf file in current working folder
Please advise.


2017-11-16 12:48:16

Eric Hassler

I am getting asked to push the Quick Access PDF button to all users. Is there an applicable GPO that I can use? If not could a push a registry key?


2016-09-14 18:31:44

James Avoli

May I suggest an incredible piece of freeware (or an optional pay-version with additional features) that works as a printer driver? It's "PDF reDirect" from www.exp-systems.com.

It installs as a printer for use by ALL programs, not just excel. I've not had a single problem with it since I installed it as way back in WinXP. Try it yourself then recommend it in your next newsletter (which is excel-lent IMHO).
Regards,
Jim


This Site

Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.