I had that problem forever and had given up on a solution, until one
night many months later, I woke up with a very simple solution:
in my print macro I would hide all the sheets that did not require
printing eg : if this cell in sheet1 was less than 0 then sheet1
visibility = false and so on
the macro will go throught the sheets and hide what needs to be hidden,
and then instead of printing selected sheets, I will command it to
print entire workbook here's an example
Sub PrintSelectSheets()
Application.ScreenUpdating = False
'Print One
Sheets("Select").Select
If ActiveSheet.Range("F4").Value < 1 Then
Sheets("one").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print two
Sheets("Select").Select
If ActiveSheet.Range("F5").Value < 1 Then
Sheets("two").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'Print three
Sheets("Select").Select
If ActiveSheet.Range("F6").Value < 1 Then
Sheets("three").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'Print four
Sheets("Select").Select
If ActiveSheet.Range("F7").Value < 1 Then
Sheets("four").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'Print five
Sheets("Select").Select
If ActiveSheet.Range("F8").Value < 1 Then
Sheets("five").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'Print six
Sheets("Select").Select
If ActiveSheet.Range("F9").Value < 1 Then
Sheets("six").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print base winder 1 left
Sheets("Left Winder 1").Select
If ActiveSheet.Range("L3").Value < 1 Then
Sheets("Left Winder 1").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print base winder 1 right
Sheets("Right Winder 1").Select
If ActiveSheet.Range("M3").Value < 1 Then
Sheets("Right Winder 1").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print base landing 1 left
Sheets("Left Landing 1").Select
If ActiveSheet.Range("A1").Value < 1 Then
Sheets("Left Landing 1").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print base landing 1 Right
Sheets("Right Landing 1").Select
If ActiveSheet.Range("H1").Value < 1 Then
Sheets("Right Landing 1").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print winder 2 left
Sheets("Left Winder 2").Select
If ActiveSheet.Range("L3").Value < 1 Then
Sheets("Left Winder 2").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print winder 2 right
Sheets("Right Winder 2").Select
If ActiveSheet.Range("M3").Value < 1 Then
Sheets("Right Winder 2").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print landing 2 left
Sheets("Left Landing 2").Select
If ActiveSheet.Range("A1").Value < 1 Then
Sheets("Left Landing 2").Select
ActiveWindow.SelectedSheets.Visible = False
End If
'print landing 2 Right
Sheets("Right Landing 2").Select
If ActiveSheet.Range("H1").Value < 1 Then
Sheets("Right Landing 2").Select
ActiveWindow.SelectedSheets.Visible = False
End If
Sheets("Start").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("Select").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("extra pages").Select
ActiveWindow.SelectedSheets.Visible = False
'Print workbook
Application.ActivePrinter = "PDF reDirect v2 on Ne00:"
ActiveWorkbook.PrintOut Copies:=1, ActivePrinter:= _
"PDF reDirect v2 on Ne00:", Collate:=True
'unhide sheets
Sheets("one").Visible = True
Sheets("two").Visible = True
Sheets("three").Visible = True
Sheets("four").Visible = True
Sheets("five").Visible = True
Sheets("six").Visible = True
Sheets("Left Winder 1").Visible = True
Sheets("Left Winder 2").Visible = True
Sheets("Right Winder 1").Visible = True
Sheets("Right Winder 2").Visible = True
Sheets("Left Landing 1").Visible = True
Sheets("Left Landing 2").Visible = True
Sheets("Right Landing 1").Visible = True
Sheets("Right Landing 2").Visible = True
Sheets("extra pages").Visible = True
Sheets("Select").Visible = True
Sheets("Start").Visible = True
end sub
I am sure there is a more efficient way this code could be written but
it does what I want
Good Luck