If a sheet is hidden it has to be unhidden before printing, however briefly. This process can be largely hidden from the user with the likes of:
Code:
Application.ScreenUpdating = False
With Sheets("Sheet1")
originalVisibility = .Visible
.Visible = xlSheetVisible
.PrintOut
.Visible = originalVisibility
End With
Application.ScreenUpdating = True
where the sheet is restored to its original visibilty after the print instruction.