Print All Workbooks in a Folder

Sometimes you may need to print all workbooks in a folder, open each workbook, print, close the workbook, and then open the next one. Opening and printing each workbook in a folder is typically a time consuming manual process. This little macro takes care of that annoyance.

Macro Code (VBA Code)

Sub PrintAllWorkbooks()
'Step 1:Declare your variables
    Dim MyFiles As String
'Step 2: Specify a target folder/directory
    MyFiles = Dir("C:\Temp\*.xlsx")
    Do While MyFiles <> ""
'Step 3: Open Workbooks one by one
    Workbooks.Open "C:\Temp\" & MyFiles
    ActiveWorkbook.Sheets("Sheet1").PrintOut Copies:=1
    ActiveWorkbook.Close SaveChanges:=False

'Step 4: Next File in the Directory
    MyFiles = Dir
    Loop
End Sub

How This Macro Works

In this macro, we use the Dir function. The Dir function returns a string that represents the name of the file that matches what you pass to it.

In this code, we use the Dir function to enumerate through all the .xlsx files in a given folder, capturing each file’s name. Then we open each file, print, and close the file.

  1. Step 1 declares the MyFiles string variable that will capture each file name that is in the enumeration.
  2. Step 2 uses the Dir function to specify the folder and file type we are looking for. Note that the code here is looking for *.xlsx. This means that only .xlsx files will be looped through. If you are looking for .xls files, you will need to specify that (along with the directory you need to search). The macro passes any file name it finds to the MyFiles string variable.
  3. Step 3 opens the file and then prints out one copy of Sheet1. Needless to say, you will probably want to change which sheets to print. You can also change the number of copies to print.
  4. Step 4 loops back to find more files. If there are no more files, the MyFiles variable is blank. If that is the case, the loop and macro end.

How to Use This Macro

To use this macro, you can copy and paste it into a standard module:

  1. Activate the Visual Basic Editor by pressing ALT+F11.
  2. Right-click the project/workbook name in the Project window.
  3. Choose Insert -> Module.
    Insert Module
  4. Type or paste the code in the newly created module. You will probably need to change the target folder, file type, change which sheets to print. you can also change the number of copies to print.

Leave a comment

Your email address will not be published. Required fields are marked *

Format your code: <pre><code class="language-vba">place your code here</code></pre>

2 comments
  1. PE
    Peter

    This macro does not respond when I run it. I debug and no errors come up but nothing happens when I run it. Any troubleshooting ideas?