以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教指定打印机设置问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=48173)

--  作者:xiaoqiwei
--  发布时间:2014/3/24 14:46:00
--  请教指定打印机设置问题

  我现在的打印是使用模板形式生成报表直接打印,但是由于现在需求不同的报表采用不同的打印机打印,所以需要每种报表都需要设置指定的打印机,请问

 

我使用如下的方式打印报表,如何指定打印机呢?

 

 

      Dim Proc As New Process
        Proc.File = "模板路径"
        Proc.Verb = "Print"
        Proc.Start()


--  作者:狐狸爸爸
--  发布时间:2014/3/24 14:51:00
--  

这个,你还是用vba的方式设置:

http://www.foxtable.com/help/topics/2121.htm

 

如果帮助的内容不够,可以百度,百度文库有大量的excel的vba的知识。

[此贴子已经被作者于2014-3-24 14:51:08编辑过]

--  作者:Bin
--  发布时间:2014/3/24 14:51:00
--  

打印输出

利用PageSetup属性,可进行各种打印设置。如:


Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
With Ws.PageSetup
    \'设置打印区域
    .PrintArea = "A1:H10"   \'打印工作表的指定区域
    .PrintArea = Ws.UsedRange.Address   \'打印工作表的使用区域
    .PrintTitleColumns = Ws.Columns("A:H").Address   \'打印列标题(在每一页的左边重复出现)
    .PrintTitleRows = Ws.Rows(1).Address \'打印行标题(在每一页的顶部重复出现)
    \'设置页面
    .PaperSize = MSExcel.XlPaperSize.xlPaperA4   \'纸张大小
    .LeftMargin = 30 \'页面左边距
    .RightMargin = 30\'页面右边距
    .TopMargin = 50  \'页面顶部边距
    .BottomMargin = 50   \'页面底部边距
    .HeaderMargin = 40   \'页面顶端到页眉的距离
    .FooterMargin = 40   \'页脚到页面底端的距离
    .CenterHorizontally = True   \'页面水平居中
    .CenterVertically = True \'页面垂直居中
    \'设置页眉
    .LeftHeader = "打印日期: &D" \'左页眉,&D表示日期
    .CenterHeader = "&""隶书,常规""&20 数据分析表"   \'中页眉,并将字体设置为隶书和20号字大小
    .RightHeader = "打印者: " & App.UserName \'右页眉
    \'设置页脚
    .LeftFooter = "文件: &F  &A" \'左页脚,&F表示文件名,&A表示工作表名
    .CenterFooter = ""   \'中页脚为空
    .RightFooter = "第 &P 页  共 &N 页"  \'右页脚
    \'打印模式
    .Orientation = MSExcel.xlPageOrientation.xlPortrait  \'纵向打印
    .Orientation = MSExcel.xlPageOrientation.xlLandscape \'横向打印
    .PrintHeadings = True\'打印行号和列标
    .PrintGridlines = True   \'打印网格线
    \'缩放打印
    .Zoom = False\'以下设置将缩印在一页内
    .FitToPagesWide = 1  \'按照1页的宽度打印
    .FitToPagesTall = 1  \'按照1页的高度打印
End With
App.Visible = True
Ws.PrintPreview
App.Quit

补充说明,Zoom是用于设置打印工作表时的缩放比例,数值在10和400之间。如果本属性设为False,则由FitToPagesWide属性和FitToPagesTall属性的设定值对工作表的缩放进行控制。 

预览和打印

  • PrintPreview

    打印预览。执行该方法时,如果将参数设为False,则不允许在预览时进行打印设置。

    如:Ws.PrintPreview(False)

    注意,在执行打印预览时,必须先将Application的Visible设置为True!
     
  • PrintOut

    直接打印。如,Ws.PrintOut

    该方法还可通过设置有关参数来控制打印,如下面的代码就是打印第1-10页,打印份数为3,打印前先预览,指定的打印机为"pdfFactory Pro":

    Ws.PrintOut(From:=1,To:=10,Copies:=3,Preview:=True,ActivePrinter:="pdfFactory Pro")

换页打印

利用PageBreak属性可手工控制换页。

如 在工作表的第24行后设置一个手动分页符:
Ws.Rows(25).PageBreak = MSExcel.XlPageBreak.xlPageBreakManual

如 在工作表的第3列左侧设置一个手动分页符:
Ws.Columns(3).PageBreak = MSExcel.XlPageBreak.xlPageBreakManual

清除所有的手动分页符:
Ws.Cells.PageBreak = MSExcel.XlPageBreak.xlPageBreakNone

下面的例子就是对有内容的区域,每打印5行就换页:

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
\'对A列从65536行开始向上查找,直到找到最后一个非空单元格为止,并得到其行号.也就是有内容的结束行
Dim EndRow As Integer = Ws.Range("A65536").End(MSExcel.XlDirection.xlUp).Row
\'对A列从第1行开始向下查找,直到找到最后一个非空单元格为止,并得到其行号.也就是有内容的开始行
Dim FirstRow As Integer = Ws.Range("A1").End(MSExcel.XlDirection.xlDown).Row
\'对A列从第1行开始向下查找,直到找到最后一个非空单元格为止,并得到其行号.也就是有内容的开始行
Ws.Cells.PageBreak = MSExcel.XlPageBreak.xlPageBreakNone\'清除所有分页符
For i As Integer = FirstRow+6 To EndRow Step 5  \'每5行就分页
    Ws.Rows(i).PageBreak = MSExcel.XlPageBreak.xlPageBreakManual
Next
App.Visible = True
Ws.PrintPreview
App.Quit


--  作者:xiaoqiwei
--  发布时间:2014/3/24 15:27:00
--  
谢谢狐爸和BIN的帮助,该办法很好!已经解决问题,但是还有一个问题就是,由于各个报表的纸张尺寸不统一,如何设定其纸张大小呢?需要长和宽设置,单位为毫米,谢谢!
--  作者:Bin
--  发布时间:2014/3/24 15:36:00
--  
上面就有说呀.3楼.
--  作者:xiaoqiwei
--  发布时间:2014/3/24 15:58:00
--  
不是页眉页脚和左边距右边距那个喔,是整张纸张的长度和宽度哦
--  作者:Bin
--  发布时间:2014/3/24 16:06:00
--  
\'设置页面
    .PaperSize = MSExcel.XlPaperSize.xlPaperA4   \'纸张大小
    .LeftMargin = 30 \'页面左边距
--  作者:Bin
--  发布时间:2014/3/24 16:06:00
--  
你都没认真看,扫一眼就说没有图片点击可在新窗口打开查看
--  作者:xiaoqiwei
--  发布时间:2014/3/24 16:15:00
--  

那如果我想设置其 长 :356mm ,宽 456 mm 呢?


--  作者:Bin
--  发布时间:2014/3/24 16:41:00
--  
纸张有这些类型http://msdn.microsoft.com/zh-cn/library/office/ff834612.aspx

如果希望自己设置长宽,似乎不可以,你可以到一些VBA社区论坛看一下.  我找了一下,没找到相关资料.