以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]VBA无法设置横着打印?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=117970)

--  作者:新福星
--  发布时间:2018/4/22 10:08:00
--  [求助]VBA无法设置横着打印?
按照帮助文件中的Excel与VBA章节中的打印输出来设置程序。

思路打开一个Excel文件后,由程序设置页面打印后关闭这个文件后再接着打开下一个Excel文件,循环往复打印。

问题1 Excel文件原来的页面设置和程序页面设置是什么关系?
问题2  .Orientation = MSExcel.xlPageOrientation.xlLandscape \'横向打印 这条语句怎么无效呢?怎么设置都是竖着打印呢?
要求是页面为A5纸,然后连续打印。 怎么解决?谢谢

--  作者:有点甜
--  发布时间:2018/4/22 22:37:00
--  

打印预览是否正常?请上传实例,或者贴出具体代码测试。


--  作者:新福星
--  发布时间:2018/4/23 17:02:00
--  

    For Each s As Row In Tables(bm5).GetCheckedRows
        报表名称=s("出入库单") & "出入库单"
        File_name=报表目录 &  报表名称  & ".xls"
        If FileSys.FileExists(File_Name)=False Then Continue For
        Wb  = App.WorkBooks.Open(File_Name)
        ws= Wb.WorkSheets("出入库单")
        
        With Ws.PageSetup
            \'设置打印区域
            \'  .PrintArea = ws.UsedRange \'  "A1:H10"   \'打印工作表的指定区域
            .PrintArea = Ws.UsedRange.Address   \'打印工作表的使用区域
            
            \'   .PrintTitleColumns = Ws.Columns("A:H").Address   \'打印列标题(在每一页的左边重复出现)
            \'  .PrintTitleRows = Ws.Rows(1).Address \'打印行标题(在每一页的顶部重复出现)
            \'设置页面
            .PaperSize = MSExcel.XlPaperSize.xlPaperA5   \'纸张大小
            .LeftMargin = 10 \'页面左边距
            \' .RightMargin = 1\'页面右边距
            .TopMargin = 20  \'页面顶部边距
            \' .BottomMargin = 1   \'页面底部边距
            \'  .HeaderMargin = 10   \'页面顶端到页眉的距离
            \'  .FooterMargin = 10   \'页脚到页面底端的距离
            \'  .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.5  \'按照1页的宽度打印
           \' .FitToPagesTall = 1 \'按照1页的高度打印
        End With
        \'   Ws.Rows(16).PageBreak = MSExcel.XlPageBreak.xlPageBreakManual
        
        App.Visible = True
        \'   Ws.PrintPreview
        Ws.PrintOut
        wb.save
        wb.close
        
        App.Quit
        
    Next

代码如上,之前已经形成了若干个Excel文件,每一个Excel文件为独立的一张入(出)库单,需要实现连续打印的功能.
按照上述参数设置是可以连续打印的,但是打印的内容过小;缩放打印那里.FitToPagesWide = 1.5时,没有任何反映,打出来的内容很小;.FitToPagesWide = 2设置2时,就超界了打出的内容大小是合适的,但是变为两张了,超宽了!
怎么设置这些参数?谢谢老师!


--  作者:新福星
--  发布时间:2018/4/23 18:43:00
--  
很奇怪明明是A5的纸,在程序中将这条语句 “ .PaperSize = MSExcel.XlPaperSize.xlPaperA4   \'纸张大小 ”  设置为A4打的就正常了!怎么会这样
--  作者:有点甜
--  发布时间:2018/4/23 19:09:00
--  
你打印机那里,没有A5纸张吧?
--  作者:新福星
--  发布时间:2018/4/23 20:33:00
--  
现在定义用的是A4纸.实际用纸是A5纸.连续打印时,按A4换页. 这样打印出来的是隔一张打印一张:(
--  作者:有点蓝
--  发布时间:2018/4/23 20:37:00
--  
应该是打印的内容超出了A5的可打印范围。

1、把打印内容设置小一点测试
2、自己自定义打印尺寸试试

--  作者:新福星
--  发布时间:2018/4/23 21:00:00
--  
打印区域经验证正好是整个有内容的区域,这也是最小区域了.

自定义打印尺寸怎么操作?

--  作者:新福星
--  发布时间:2018/4/23 21:01:00
--  
现在又改回到A5了,现象就是打的特别小,缩小了1/2 .怎么能放大一倍呢?
--  作者:有点蓝
--  发布时间:2018/4/23 21:02:00
--  
做一个可以测试的例子看看