Excel 使用不同的页面设置打印多个文档类型
我有一个运行的自动化脚本,它的输出是各种文档类型,并使用各种打印机设置打印这些文档。我在同一台打印机上打印所有文档,这很好。我有三张excel工作表需要打印。我正在使用内置的“PrintOutEx”方法打印这些文件。一个放在字母大小的纸上,两个放在11x17的纸上。接下来,我让脚本打印一个word文档,我正在使用内置的“PrintOut”方法打印它。这将在11x17纸张上打印,但要缩放,以便两页并排打印。最后,我必须打印一个多页tiff文档,我正在使用打印处理程序打印该文档。我对此有很多问题,如果这些是愚蠢的问题,我道歉,并感谢我能收集到的任何帮助Excel 使用不同的页面设置打印多个文档类型,excel,vb.net,printing,ms-word,tiff,Excel,Vb.net,Printing,Ms Word,Tiff,我有一个运行的自动化脚本,它的输出是各种文档类型,并使用各种打印机设置打印这些文档。我在同一台打印机上打印所有文档,这很好。我有三张excel工作表需要打印。我正在使用内置的“PrintOutEx”方法打印这些文件。一个放在字母大小的纸上,两个放在11x17的纸上。接下来,我让脚本打印一个word文档,我正在使用内置的“PrintOut”方法打印它。这将在11x17纸张上打印,但要缩放,以便两页并排打印。最后,我必须打印一个多页tiff文档,我正在使用打印处理程序打印该文档。我对此有很多问题,如
Public Sub PrintSPIDPackage(SPID As String)
On Error GoTo errHandler
Dim printerSettings As New Printing.PrinterSettings
Dim curPrinter As String
Dim engPrinter As String
Dim purPrinter As String
engPrinter = "engBLAH"
purPrinter = "purBLAH"
curPrinter = printerSettings.PrinterName
Dim spidBBPath As String
spidBBPath = ****REDACTED
spidDrawingPackagePath = ***REDACTED***
Dim eAPP As New Excel.Application
Dim wB As Excel.Workbook
Dim wS As Excel.Worksheet
Dim rng As Excel.Range
Dim lRow As Integer
Dim wAPP As New Word.Application
Dim doc As Word.Document
wB = eAPP.Workbooks.Open(spidBBPath)
wS = wB.Worksheets(selectedSheet & " OPs")
wS.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLetter 'I would think this causes the printer to printout to a letter size paper
wS.PrintOutEx(ActivePrinter:=engPrinter)
wS = wB.Worksheets(selectedSheet)
lRow = wS.Range("A" & wS.Rows.Count).End(Excel.XlDirection.xlUp).Row + 3
rng = wS.Range("A1:I" & lRow)
rng.PrintOutEx(ActivePrinter:=engPrinter) 'PRINT SHOULD BE AN 11x17
wS = wB.Worksheets(selectedSheet & " MLB")
wS.PrintOutEx(ActivePrinter:=engPrinter) 'PRINT SHOULD BE AN 11x17
wB.Close(False)
eAPP.Quit()
Runtime.InteropServices.Marshal.ReleaseComObject(wS)
Runtime.InteropServices.Marshal.ReleaseComObject(wB)
Runtime.InteropServices.Marshal.ReleaseComObject(eAPP)
If InStr(xPath, ".doc") <> 0 Then
doc = wAPP.Documents.Open(xPath)
wAPP.ActivePrinter = engPrinter
doc.PageSetup.PaperSize = Word.WdPaperSize.wdPaperLetter ''''''print out should be 11x17 with two pages side by side
wAPP.PrintOut(PrintZoomColumn:=2, PrintZoomRow:=1) ', PrintZoomPaperHeight:=2 * (11 * 1440), PrintZoomPaperWidth:=2 * (8.5 * 1440)) '''''AS you see I tried scaling...
doc.Close(False)
doc = Nothing
wAPP.Quit()
wAPP = Nothing
End If
Dim pDoc As New Printing.PrintDocument
currPage = 0
AddHandler pDoc.PrintPage, AddressOf pDocPage
PrintDialog1.Document = pDoc
pDoc.DefaultPageSettings.Landscape = True
pDoc.DocumentName = SPID & "-Drawing Package"
pDoc.PrinterSettings.PrinterName = engPrinter
pDoc.DefaultPageSettings.Landscape = True
pDoc.DefaultPageSettings.Margins.Left = 50
pDoc.DefaultPageSettings.Margins.Right = 50
pDoc.DefaultPageSettings.Margins.Top = 50
pDoc.DefaultPageSettings.Margins.Bottom = 50
Dim ps As New Printing.PaperSize("Tabloid", 1700, 1100)
ps.PaperName = Printing.PaperKind.Tabloid
pDoc.DefaultPageSettings.PaperSize = ps
pDoc.Print()
printerSettings.PrinterName = curPrinter 'this should reset the user's default printer to the original setting to before when this routine started??
Exit Sub
errHandler:
MsgBox(Err.Description)
End Sub
Sub pDocPage(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs)
Dim img As Image = Image.FromFile(spidDrawingPackagePath)
Dim pCount = img.GetFrameCount(FrameDimension.Page)
img.SelectActiveFrame(FrameDimension.Page, currPage)
Using stReader As IO.MemoryStream = New IO.MemoryStream
img.Save(stReader, ImageFormat.Bmp)
Dim bmp As Bitmap = CType(Image.FromStream(stReader), Bitmap)
e.Graphics.DrawImage(bmp, 0, 0)
bmp.Dispose()
End Using
currPage += 1
If currPage < pCount Then
e.HasMorePages = True
End If
End Sub
公共子打印SPID包(SPID为字符串)
关于错误转到错误处理程序
调暗打印机设置为新打印。打印机设置
将打印机设置为字符串
将打印机设置为字符串
暗紫色打印机作为字符串
engPrinter=“engBLAH”
purPrinter=“purBLAH”
curPrinter=printerSettings.PrinterName
将spidBBPath设置为字符串
spidBBPath=****已编辑
spidDrawingPackagePath=***已编辑***
Dim eAPP作为新的Excel.Application
将wB设置为Excel.工作簿
将wS设置为Excel.Worksheet
尺寸为Excel.Range
Dim lRow作为整数
dimwapp作为新词的应用
Dim doc作为Word.Document
wB=eAPP.Workbooks.Open(spidbpath)
wS=wB.工作表(选定工作表和“OPs”)
wS.PageSetup.PaperSize=Excel.XlPaperSize.xlPaperLetter'我认为这会导致打印机打印出字母大小的纸张
wS.PrintOutEx(ActivePrinter:=engPrinter)
wS=wB.工作表(选定工作表)
lRow=wS.Range(“A”&wS.Rows.Count).End(Excel.XlDirection.xlUp).Row+3
rng=wS.范围(“A1:I”和lRow)
rng.PrintOutEx(ActivePrinter:=engPrinter)的打印应该是11x17
wS=wB.工作表(选定工作表和“MLB”)
wS.PrintOutEx(ActivePrinter:=engPrinter)的打印应该是11x17
wB.关闭(错误)
eAPP.Quit()
Runtime.InteropServices.Marshal.ReleaseComObject(wS)
Runtime.InteropServices.Marshal.ReleaseComObject(wB)
Runtime.InteropServices.Marshal.ReleaseComObject(eAPP)
如果InStr(xPath,“.doc”)为0,则
doc=wAPP.Documents.Open(xPath)
wAPP.ActivePrinter=engPrinter
doc.PageSetup.PaperSize=Word.WdPaperSize.wdPaperLetter“打印输出应为11x17,两页并排
打印输出(PrintZoomColumn:=2,PrintZoomRow:=1),PrintZoomPaperHeight:=2*(11*1440),PrintZoomPaperWidth:=2*(8.5*1440)),正如您看到的,我尝试了缩放。。。
单据关闭(假)
doc=无
wAPP.Quit()
wAPP=无
如果结束
Dim pDoc作为新的Printing.PrintDocument
currPage=0
AddHandler pDoc.PrintPage,pDocPage的地址
PrintDialog1.Document=pDoc
pDoc.DefaultPageSettings.横向=真
pDoc.DocumentName=SPID&“绘图包”
pDoc.PrinterSettings.PrinterName=engPrinter
pDoc.DefaultPageSettings.横向=真
pDoc.DefaultPageSettings.Margins.Left=50
pDoc.DefaultPageSettings.Margins.Right=50
pDoc.DefaultPageSettings.Margins.Top=50
pDoc.DefaultPageSettings.Margins.Bottom=50
作为新印刷品的暗淡ps。纸张尺寸(“小报”,17001100)
ps.PaperName=打印.PaperKind.Tabloid
pDoc.DefaultPageSettings.PaperSize=ps
pDoc.Print()
printerSettings.PrinterName=curPrinter'当此例程启动时,应将用户的默认打印机重置为之前的原始设置??
出口接头
错误处理程序:
MsgBox(错误描述)
端接头
子pDocPage(ByVal发送方作为对象,ByVal e作为打印。PrintPageEventArgs)
Dim img As Image=Image.FromFile(spidDrawingPackagePath)
Dim pCount=img.GetFrameCount(FrameDimension.Page)
img.选择活动框架(FrameDimension.Page,currPage)
将stReader用作IO.MemoryStream=新IO.MemoryStream
保存(stReader,ImageFormat.Bmp)
将bmp设置为位图=CType(Image.FromStream(stReader),位图)
e、 Graphics.DrawImage(bmp,0,0)
bmp.Dispose()
终端使用
当前页面+=1
如果当前页面
您遇到了哪些问题?它会抛出错误吗?注释掉错误上的转到errHandler
行可能会有所帮助,因此它会抛出一个错误,您可以单击“调试”查看它发生在哪一行。没有错误弹出窗口,蝙蝠侠先生。1.用户的默认打印机不会更改回“curPrinter”。版画如下所示