Tony A: thanks for the ideas.
I've put together a .net console app to print these spreadsheets for us. An example command line would be something like
print_utility.exe c:\p\flash.xls---\\svr99rvi\P99GO---ALLSHEETS---$1:$3---Prepared For JKelly---0---PORTRAIT---1---1---0
.net Source code goes something like this. consider it open source.
Module Module1
Sub Main()
If Trim(Command$) = "" Then Exit Sub
Dim ArrCmd() As String
Dim x As Int16
ArrCmd = Split(Command$, "---")
'-----arrcmd(0) = filename -----'
'-----arrcmd(1) = printername -----'
'-----arrcmd(2) = sheetname[opt] ALLSHEETS -----'
'-----arrcmd(3) = titlerows $1:$3 ----'
'-----arrcmd(4) = route to header ----'
'-----arrcmd(5) = boolean color=0 b&w=1 ----'
'-----arrcmd(6) = "PORTRAIT"/"LANDSCAPE"
'-----arrcmd(7) = fit to pages wide
'-----arrcmd(8) = fit to pages tall
'-----arrcmd(9) boolean print gridlines=1
'ReDim ArrCmd(9)
'ArrCmd(0) = "c:\p\pulse.xls"
'ArrCmd(1) = "\\svr99rvi\p99go"
'ArrCmd(2) = "01 HC"
'ArrCmd(3) = "$1:$2"
'ArrCmd(4) = "ROUTE_TO_JASON"
'ArrCmd(5) = "0"
'ArrCmd(6) = "LANDSCAPE"
'ArrCmd(7) = "1"
'ArrCmd(8) = "1"
'ArrCmd(9) = "0"
If UCase(Right(Trim(ArrCmd(0)), 4)) = ".XLS" Then
Dim Xlapp As Microsoft.Office.Interop.Excel.Application
Dim jSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim myOrientConst As Microsoft.Office.Interop.Excel.XlPageOrientation
Xlapp = New Microsoft.Office.Interop.Excel.Application
Xlapp.DisplayAlerts = False
Xlapp.Visible = True
Xlapp.Workbooks.Open(FileName:=ArrCmd(0), UpdateLinks:=3)
For Each jSheet In Xlapp.Worksheets
If UBound(ArrCmd) >= 2 Then
If Trim(jSheet.Name) = Trim(ArrCmd(2)) Or Trim(ArrCmd(2)) = "ALLSHEETS" Then
jSheet.PageSetup.PrintArea = ""
With jSheet.PageSetup
.LeftFooter = "Printed &D - &T"
.LeftMargin = Xlapp.InchesToPoints(0.3)
.RightMargin = Xlapp.InchesToPoints(0.3)
.TopMargin = Xlapp.InchesToPoints(0.6)
.BottomMargin = Xlapp.InchesToPoints(0.6)
.HeaderMargin = Xlapp.InchesToPoints(0.4)
.FooterMargin = Xlapp.InchesToPoints(0.4)
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Zoom = False
.Draft = False
If UBound(ArrCmd) >= 3 Then .PrintTitleRows = Trim(ArrCmd(3)) 'add to stream
If UBound(ArrCmd) >= 4 Then .LeftHeader = Trim(ArrCmd(4)) 'add to stream
If UBound(ArrCmd) >= 5 Then .BlackAndWhite = CBool(ArrCmd(5)) 'add to cmd stream
If UBound(ArrCmd) >= 6 Then
Select Case UCase(ArrCmd(6))
Case "PORTRAIT"
jSheet.PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlPortrait
Case "LANDSCAPE"
jSheet.PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape
End Select
End If
If UBound(ArrCmd) >= 7 Then
If IsNumeric(ArrCmd(7)) Then .FitToPagesWide = CInt(ArrCmd(7))
End If
If UBound(ArrCmd) >= 8 Then
If IsNumeric(ArrCmd(8)) Then .FitToPagesTall = CInt(ArrCmd(8))
End If
If UBound(ArrCmd) >= 9 Then .PrintGridlines = CBool(ArrCmd(9))
End With
jSheet.PrintOut(Copies:=1, ActivePrinter:=Trim(ArrCmd(1)), Collate:=True)
End If
End If
Next
Do While x <= Xlapp.Windows.Count
Xlapp.ActiveWindow.Close()
x = x + 1
Loop
Xlapp.Quit()
Xlapp = Nothing
End If '//UCase(Right(Trim(ArrCmd(0)), 4)) = ".XLS"
End Sub
End Module
Prod: Single Windows 2008 Server running Webfocus 7.7.03 Reporting server Web server IIS6/Tomcat, AS400 DB2 database.