Avatar of Bob Barnes
Bob Barnes
Flag for United Kingdom of Great Britain and Northern Ireland asked on

Excel Macro to save a PDF

I am wanting to convert some sheets in a workbook to individual PDFs, each with the name indicated on the sheet's tab. I have managed to save the PDF's with its name being the same as an individual cell ("C15"), but it's not perfect. Here is my effort:

Sub Convert_PDF()
'
' Convert_PDF Macro
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Range("C15").Value _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=True
    Range("G15").Select
End Sub

Although this works and a PDF file is produced, it is saved in My Documents (sometimes) and has turned up in all sorts of random places on other occassions. I would like to save the individual PDFs to a file of my choosing, as the macro begins to run.

Please tell me this is possible and how it can be done.

Thanks for any help.

Bob
Microsoft Excel

Avatar of undefined
Last Comment
Bob Barnes

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
Rgonzo1971

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Joe Howard

If I understood correctly, this is what you want:
Sub Convert_PDF()

    Dim sht As Worksheet
    Dim strFolderName As String

    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Show
        On Error Resume Next
        strFolderName = .SelectedItems(1)
        Err.Clear
        On Error GoTo 0
    End With
    
    If Len(strFolderName) > 0 Then
        For Each sht In ActiveWorkbook.Sheets
            sht.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
            sht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFolderName & "\" & sht.Name, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
        Next
    Else
        MsgBox "Action aborted, since no folder was selected!"
    End If

End Sub

Open in new window

Bob Barnes

ASKER
Thank-you for your solution, it works perfectly.
Your help has saved me hundreds of hours of internet surfing.
fblack61