Private Sub SetPrinter(ByVal xx As Integer, ByVal yy As Integer)
  With Printer
       .FontName = "宋体"
       .FontSize = 13
       .PaperSize = 256  'vbPRPSUser       ' 有没有试过将这一句提前
       .ScaleMode = vbMillimeters    '毫米
      
      .Width = xx
      .Height = yy
      .CurrentX = 0
      .CurrentY = 0
  End With
End Sub

解决方案 »

  1.   

    试过了,但是仍然不行.
    偶然间,将设置纸张大小增大了100倍(原来的的大小参分别为:151,169,按照毫米单位设置),结果竟然打出来了.仍然很迷惑,是不是纸张大小只能采用vb默认的twip,而打印格式中的做标值却采用了毫米?
    谢谢xqchang()的关注!
      

  2.   

    Height, Width PropertiesSee Also    Example    Applies ToReturn or set the dimensions of an object or the width of the Columns object of a DataGrid control. For the Printer and Screen 
                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    objects, not available at design time.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    .....Printer object — the physical dimensions of the paper set up for the printing device; not available at design time. If set at run time, values in these properties are used instead of the setting of the PaperSize property.对这句话不太理解,是否是这个原因呢?
      

  3.   

    上面的意思是说对于printer对象,在“设计”时设置那两个属性无效,但在“运行”时是可以的,因此没有问题的,我想你能否将“.PaperSize = 256”这一行注释掉试一试,因为你设置了height和width,所以pagesize其实是没有用的,试一试,OK?
      

  4.   

    问题可能在这儿:你设置了ScaleMode,但是没有设置ScaleHeight、ScaleWidth、ScaleLeft 与 ScaleTop,将这些属性都设置了,再试吧。
      

  5.   

    '注释掉 .ScaleMode = vbMillimeters    
    .Width = .ScaleX(xx, vbMillimeters, vbTwips) 
    .Height = .ScaleX(yy, vbMillimeters, vbTwips) 
      

  6.   

    在98下我的EPSON   LQ-300K也不能通过Width 和 Height 设置纸张大小,
    有位哥们告诉我在2000用API下解决了,但是还是不能用到98里去。想看看2000是怎样搞的请到这里去一下:
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;q282474#2
      

  7.   

    to :sail_about(逛荡) 我试了一下,果然可以设置纸张大小,但是前提必须是打印机设置中有子定义大小这个选项,并且ScaleMode  =  vbMillimeters不能注释掉,否则后边打印的坐标全乱套了.
    to:xqchang() 试过了,不行
    to:xqchang() 这种方法可能有效,但是还没有验证一下,有空我就琢磨一下
      

  8.   

    to :sail_about(逛荡) 我试了一下,果然可以设置纸张大小,但是前提必须是打印机设置中有子定义大小这个选项,并且ScaleMode  =  vbMillimeters不能注释掉,否则后边打印的坐标全乱套了.
    to:xqchang() 试过了,不行
    to:xqchang() 这种方法可能有效,但是还没有验证一下,有空我就琢磨一下
    分怎么给,我怎么给不出去?