'Loop through each worksheet For Each ws In ThisWorkbook.Worksheets ws.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=folderPath & ws.Name & ".pdf", _ Quality:=xlQualityStandard Next ws
Dim folder As String folder = ThisWorkbook.Path & "\" filePath = folder & "MyReport.pdf" Prevent duplicate names by adding the current date/time: excel vba print to pdf and save
ws.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=filePath, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False MsgBox "PDF saved at: " & filePath End Sub You don’t need to set print areas manually. Define the range directly in VBA. 'Loop through each worksheet For Each ws In ThisWorkbook