Hi Ant,
First up I'd add the 2 lines below to the start of your code & the respective "true" lines after your code:
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If this doesn't help/speed it up enough, have a look at Ron Debruin's page (I don't know how fast this technique is, as I have no printer at home):
http://www.rondebruin.nl/print.htm#visible
Ron shows the use of an array in the "one liner code" near the base of his page which suggests you were very close/have the solution. He doesn't use a "with" construct (see below) but I don't know if it would work on hidden sheets:
Sheets(Array("Sheet1", "Sheet3")).PrintOut
'all sheets in the array
Hth
Rob Brockett
NZ
Always learning & the best way to learn is to experience...
Bookmarks