Sometimes, you may want to convert multiple Excel workbooks to PDF files. Here, in this article, we will introduce 2 methods to get it in batches.
In some cases, you may need to convert an Excel workbook to a PDF file in that a PDF file cannot be modified by others readily. As we all know, it is considerably easy to convert an Excel workbook to PDF, which can be achieved by native “Save As” feature, like the following Method 1. Yet, if there are many workbooks to be converted to PDF, you had better use the Method 2 introduced thereinafter, which is much more efficient. Now, read on to get them in detail.
Method 1: Convert One by One
- First off, open an Excel workbook which you want to convert to PDF file.
- Then, go to “File” menu and click “Save as” option.
- Next, in the “Save As” window, select “PDF” from the drop down list of “Save as type”.
- After that, click “Options” button in the “Save As” window.
- Then, in the subsequent “Options” dialog box, select “Entire workbook”.
- Lastly, click “OK” and “Save” to complete converting.
- In this way, you can convert the other Excel workbooks to PDF files one by one manually.
Method 2: Batch Convert via VBA
- At the very outset, collect all the Excel workbooks to be converted to PDF in a same Windows folder.
- Then, launch Excel application.
- Next, access Excel VBA editor by referring to “How to Run VBA Code in Your Excel“.
- Then, put the following code into a module or project.
Sub BatchOpenMultiplePSTFiles() Dim objShell As Object Dim objWindowsFolder As Object Dim strWindowsFolder As String 'Select the specific Windows folder Set objShell = CreateObject("Shell.Application") Set objWindowsFolder = objShell.BrowseForFolder(0, "Select a Windows folder:", 0, "") If Not objWindowsFolder Is Nothing Then strWindowsFolder = objWindowsFolder.self.Path & "\" Call ProcessFolders(strWindowsFolder) 'Open the windows folder Shell "Explorer.exe" & " " & strWindowsFolder, vbNormalFocus End If End Sub Sub ProcessFolders(strPath As String) Dim objFileSystem As Object Dim objFolder As Object Dim objFile As Object Dim objExcelFile As Object Dim objWorkbook As Excel.Workbook Dim strWorkbookName As String Set objFileSystem = CreateObject("Scripting.FileSystemObject") Set objFolder = objFileSystem.GetFolder(strPath) For Each objFile In objFolder.Files strFileExtension = objFileSystem.GetExtensionName(objFile) If LCase(strFileExtension) = "xls" Or LCase(strFileExtension) = "xlsx" Then Set objExcelFile = objFile Set objWorkbook = Application.Workbooks.Open(objExcelFile.Path) strWorkbookName = Left(objWorkbook.Name, (Len(objWorkbook.Name) - Len(strFileExtension)) -1) objWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPath & strWorkbookName & ".pdf" objWorkbook.Close False End If Next 'Process all folders and subfolders If objFolder.SubFolders.Count > 0 Then For Each objSubFolder In objFolder.SubFolders If ((objSubFolder.Attributes And 2) = 0) And ((objSubFolder.Attributes And 4) = 0) Then ProcessFolders (objSubFolder.Path) End If Next End If End Sub
- Afterwards, click into the first subroutine and press “F5” key.
- In the popup dialog, select the specific Windows folder where the Excel files are collected.
- Then, click “OK”.
- When macro finishes, the Windows folder will be opened, in which you can see the PDF files, like the following screenshot.
Comparison
Advantages | Disadvantages | |
Method 1 | Pretty easy to operate | Too troublesome when converting multiple Excel workbooks |
Method 2 | Much more convenient and quicker than Method 1 when processing many workbooks | Users have to keep cautious of the external malicious macros. |
In Case of Excel File Corruption
Multiple Excel users have ever experienced Excel file corruption. At times, Excel’s native recovery feature can restore the corrupt Excel file. Yet, sometimes it can’t. Therefore, it is highly recommended to prepare a powerful Excel fix tool, such as DataNumen Excel Repair.
Author Introduction:
Shirley Zhang is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including recover sql and outlook repair software products. For more information visit www.datanumen.com
Bonjour, un de mes collègue a fait un code de ce type aussi mais on y a ajouter un format de papier mais cette ligne semble causé des problème et je ne comprend pas pourquoi.
voici la partie du code
‘Ensure Workbook has opened before moving on to next line of code
With wsA.PageSetup
.PaperSize = xlPaperLetter
‘.CenterHorizontally = True
‘ .CenterVertically = True
‘ .Orientation = xlLandscape
‘ .Zoom = False
‘ .FitToPagesWide = 1
‘ .FitToPagesTall = 1
‘ .BottomMargin = 0
‘ .TopMargin = 0
‘ .RightMargin = 0
‘ .LeftMargin = 0
End With
DoEvents
wsA.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=myPath & myFile2 & “.pdf”, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
‘Save and Close Workbook
wb.Close SaveChanges:=False
merci d’avance pour votre aide
Leuk concept Batchconversie via VBA:
Helaas werkt de code in de tekst Set objFolder (“Scripting.FileSystemObject = strPath) niet meer.
Zou mooi zijn als de scherm afdruk groter was dan wis je wat erin kon komen te staan.
Pop up venster komt wel op.
1
Thank you for this. I have workbooks which have two sheets in each, is there a way for this to work so it creates the PDF with the two full pages as currently it is creating the PDFs over 5 pages.
what if we want a single worksheet within the workbook?
This is so amazing, can’t thank you enough!!! What a time saver