Free Microsoft Excel 2013 Quick Reference

Batch Printing

I have a sheet that contains prices for goods depending on the customer number entered in to a particular cell. This is then printed off and sent to each customer. I would like to know how to get this cell to change automatically and print the document for each customer in turn (the customer numbers are held in a column on the sheet.)

Many thanks.

Post your answer or comment

comments powered by Disqus
I have an excel file which stores worker information.

Workers name, date of hire, address, etc

In addition I have hyperlinked pdf files which contain forms they signed when they started working.

What I need to do is be able to select workers in my excel file and have the hyperlinked files batch printed, zipped into a file or saved to a folder - any of which will work for me. Is there a way to do that with a macro?

I am trying to batch print a series of userforms from within vba to a single pdf file. How can this be accompished? At the moment whenever my code encounters "PrintForm" I have to fill in the save file dialogue. After creating 30 pdf files I use adobe to combine them. There must be a better way.

I don't even want to show the half finished code I have to try and accomplish this out of embarrassment, so I am asking for help on how to batch print all workbooks and all sheets in a designated folder?

I will be running this from another workbook in another folder.


I have posted this on as well, here is that link:

I am trying to create an Array for a Dynamic number of sheets in a workbook (they change depending on the number of salesmen for a particluar vendor).
I am using Excel 2003 in a Windows 7 environment.
I have the code for printing to a pdf file (I need to batch print these so they end up in one pdf file), but don't really know how to determine and put into an array the unknown number of sheets for printing.
I have started with something like this (I know this isn't correct but it is somehting to show you what I am looking for).

    Dim x As Integer 
    Dim ReportArray As Variant 
    x=ActiveWorkbook.Worksheets.Count - 8 'Start Print with Sheets(9)
    ReportArray = Array(Sheets(9) To Sheets(9+x)) 
End Sub 

If you like these VB formatting tags please consider sponsoring the author in support of injured Royal Marines
Any Help will be greatly appreciated.

If you use Autocad Lite and need to print multiple drawings you will find the attached spreadsheet very useful.

I have used it to print about 300 drawings which only took a minute to setup (much longer to print but at least unattended)

Instructions are contained. You will need to enter the names of any printers you wish to use.

The output from the spreadsheet is an Autocad Script File which is just a text file saved in your chosen location with your chosen name and a .scr extension so Autocad will recognise it.

I would like to know of a way to auto format workbooks to best fit print. We have people open every workbook and set print ranges before we batch print them in custom software. Dont want pages containing single colums and such. Any ideas?

Is there a way to print numerous excel files all at once, rather than going into each one??


Greetings, all...

Column AA1 has a list of student's names (it varies each term). Cell B9 has been a drop down list which when one was selected, updated vie vlookup the student's scores in each subject. Now I want to change it so batch print from the list. It prints the first student's sheet fine, but won't go to the next...

Here's my code.

Sub Print_Page()
Dim COUNTER As Integer
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Selection.PrintOut Copies:=1, Collate:=True
ActiveCell.Offset([COUNTER], [0]).Range("A1").Select
Do While B9  ""
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Selection.PrintOut Copies:=1, Collate:=True
End Sub
Any ideas on what I need to change/edit/fix?

Thanks in advance,

The most exciting phrase to hear in science, the one that heralds new discoveries, is not Eureka! (I found it!) but rather, 'hmm.... that's funny...' - Isaac Asimov

Hi Everyone,

I’ve created a sheet with a dynamic chart on it. The chart updates according to a value selected from a drop down (via data validation) in cell B5. The user can then print out the relevant chart. The problem is that, on occasion, the user will have many different charts to print and it is time consuming to change the selection and press print. Okay, not that time consuming but then some people are never satisfied.

To try and work around this I’ve created a UserForm Listbox, populated it with the data validation list and set the MultiSelect property to fmMultiSelectMulti. And then I get stuck!

I can’t seem to get cell B5 to update with the first selection, print, then change to the next selection, print and so forth. I know I ought to be able to loop this somehow but the solution is evading me.

Any help would be appreciated.

Many thanks,


We are creating dozens of Excel files each with several workbooks of charts,
tables and graphs. How do we print in one step rather than the cumbersome
process of printing each individual file and its set of workbooks? Tx - rich


Usually, directly in a folder in windows I select all my excel files, right
click and select "print". Then, all my files print out. The thing is that it
prints just the first sheet, and some files have more that one sheet. Is
there a way to print all of the sheets of all of the selected files without
opening every Excel files, because I have lots of them..



Usually, directly in a folder in windows I select all my excel files, right
click and select "print". Then, all my files print out. The thing is that it
prints just the first sheet, and some files have more that one sheet. Is
there a way to print all of the sheets of all of the selected files without
opening every Excel files, because I have lots of them..


I am trying to designate the same print area on 70+ different tabs in the
same work book so that I can send them all to print at once as 70+ individual
pdf's. If I select more than one tab at a time, I dont have the option to
set the print area.

I think there are two issues:
1) How do I set the print area for all the tabs at the same time
2) How do I send each tab to print to Adobe PDF one at a time so that they
each become their own .pdf?

Is there another way to batch print different tabs?
Help Me Automate!! Please!

Apologies for my error...thread edited as requested...:-

As a newbie i thought i could overcome my little problem by research and trial and error but alas,,no i am stuck

What i have is over 20 worksheets which have information on them that i want to print when selected so, i have a "main page" with a variety of options for the user to select (by check box) and when they are happy with their selection you would click another check box to print out, i have done this because the printer is set well away from the users and if they printed of sheet by sheet then lots of miles treading back and forth to the printer room would happen so, i thought by doing it this way it would batch print all selected sheets after selection, the code is set up to print all sheets which are selected by "true" in cell O2.

This is no problem as it works well but the code also prints when the check box is de selected. What I would like is a message box to appear before the main macro runs for the user to select "yes or no" to confirm printing. I have put code in this for the command but it will not run the main magro if you select "yes"...below is the code for the main print loop...I think the code for print message should appear before this...think that is..?

Sub Print_All_Worksheets_With_Value_In_O2()
Dim Sh As Worksheet
Dim Arr() As String
Dim N As Long
N = 0
For Each Sh In ActiveWorkbook.Worksheets
If Sh.Visible = xlSheetVisible _
And LCase(Sh.Range("O2").Text) = LCase("True") Then
N = N + 1
ReDim Preserve Arr(1 To N)
Arr(N) = Sh.Name
End If
If N > 0 Then
End If
End Sub


I'd like to print off 3 excel files in seperate folders in one go. Instead
of having to open them up individually and print them.

What would be the best way to do this?

I'm asking in the VBA newsgroup because I have a resonable grasp of VBA and
would imagine it would require coding to achieve.

thanks in advance

I have an application that involves batch printing a set of reports, each of which reads data from an external source (text file). The current manual process is to:

1. Select the data table in Excel.
2. Choose Refresh Data.
3. Select the appropriate text file in the Import External Data dialog box and click Import.
4. Print selected worksheets.

I would like to be able to automate this process for, say, all of the text files placed in a given folder.

I am thinking that this may be a simple Visual Basic application, but am not sure. Could someone get me started?




I have a lot of excel files which I highlight and print by right clicking in
explorer - however after printing each file it asks if I want to "save
changes" - how can I stop this prompt every time - it annoying trying to
print 200 files.




Looking for script that will cause Printing the PDF Folders in Explorer (via Adobe Reader) in the order that they are listed, with a 10 - 15 second pause between each file.

The required printer is a network printer, set up to "Print Spooled Documents First'. Being a network printer, I can't change this default. My understanding is that the apparent 'random' print order is actually likely caused by this printer default setting. I read somewhere that someone else with this same problem solved it with a 10 second 'pause'. If needs be, I'd be willing to even double that, if required. When printing a long list, it takes a long time to manually put the prints in the order they are required. I'd sooner have the print process take (even much) longer, and have the prints come out in the order required. Sorry I can't find the site back that had that information, as well as sample code.

Coding in Windows is completely new to me, so pls. explain any offerings at beginner level.

Thanks in advance.

How can i extract the hyperlink path from an excel column and get it pasted into a column in a listbox along with the link title ?

File Page Size

drawing1 A4
drawing2 A3
drawing3 A3
drawing4 A4

To display in the listbox like:

File Page Size link

drawing1 A4 serverdrawingsdrawing1.dwf
drawing2 A3 serverdrawingssiteinvestigationsdrawing2.pdf
drawing3 A3 serverdrawingsolddrawing3.dwg
drawing4 A4 serverdrawingshousetypedrawing4.pdf

I hope this makes sense!

I've got nearly every part working of my script to have an inbuilt batch printing setup on my drawing register files which will be posted on here when i finish but this is fairly cruicial.



I am new at this Macro programing and need a little assistant.

This is what I'm trying to achieve from this batch print out.

A1 B1 C1 D1
Batch # Material 1 (kg) Material 2 (kg) Material 3 (L)
43 (150) (250) (5.0)

This is a batch print out and every single time the batch number changes, the material number changes, and it only prints out current batch line and delete the old batch line as soon as it gets new info. (i.e. for batch #44, the values from B1 to D1 will change while erasing the old data)

So, what I am trying to do is to write a Macro where for every batch increment It copies the materials info to a different work sheet and it continues to copy the new information one line after another as the batch number increases.

This is what I got so far and it isn't working and need help

Batch = 1
counter = 1

If Range("a1") = 43 + Batch  Then
Batch = Batch + 1


Sheets("sheet2").Range("b" & counter).Paste
Sheets("sheet2").Range("c" & counter).Paste
Sheets("sheet2").Range("d" & counter).Paste

counter = counter + 1

End If

This macro isn't working and at the same time I want to run this macro continuously rather than running it only once.

Hello everyone,

I decided to re-post my question since it was ignored the first time. Maybe I'll get lucky on second attempt. I just wonder, is this question so not interesting to the Forum members?

So, here I go again.
I hope that somebody has had experience with what I have to accomplish. I'd really appreciate any ideas and tips on that. Code samples - dream come true.
So here goes.
After applying specific page settings to spreadsheet - could be multiple spreadsheets in a workbook - before printing, it gets broken down into certain amount of pages - or print areas - and some of these could contain nothing but grid lines and columns' headers. So they essentially are blank. And sometimes there could be as many as 100s of these pages depending on the number and width of columns in the spreadsheet, and we have to either manually reformat Excel files to get rid of blank pages, or just pull out, again manually, all these pages from paper printout, which is very annoying and time-consuming.
Is there a way to programmatically find these blank pages and exclude them from printing? We're talking about processing of 100s of Excel files at a time - hense, batch printing.

Thank you in advance.

Hi all,

I'm looking for a method of printing a batch of pdf files from within excel that are opened via a hyperlink. I use an excel document as an index file for users to navigate their way through the assembly of a vehicle.

Below is a link to a screenshot of the excel file:

In column G of the document I have "Click Here" hyperlinks, which direct the user to a pdf file for the given task.

The user is able to open each document as they go through the build process which is great if they can use a computer near their station but unfortunately the number of computers available are limited so sometime I have to print the notes out for use. What I would like to do is select all of the hyperlinks from one section and print them in that order. I currently have to do this manually one by one which is time consuming so was looking for a quicker method of doing it?

All the pdf files are stored in 1 location so it's not so easy just to pick out the ones required for printing, plus they would be in alphabetical order instead of the order required for the build process.

Any help or info would be much appreciated. I'm not too clued up on macros so if this is the only option could you explain what would be required?

Many Thanks,

I'm trying to get VBA code to print labels in worksheet "Batch Labels" that reference data from another worksheet "DECANTING" in the same workbook. I want to print the label (x) amount of times depending on the qty needed in specified cell (first time from cell: DECANTING!AB4). After those labels are printed, I want to change the cell references to the next row of data, and repeat the process until all labels are printed.


The highlighted cells in yellow from worksheet "Batch Labels" are the cells that reference data from worksheet "Decanting".


Above is the data from worksheet "Decanting".

Please help!

I have written a macro to set the print area and print the used range information on each of the 22 tabs of data. What i would like is to able to print the whole range 6 times ( I dont want each page to print 6 times, i need the whole lot printed as a batch 6 times!). Also can i write in to the macro, say like an input box, how many prints i would like at the start?
Thanks in advance

No luck finding an answer? You could always try Google.