今天,还是说下打印
示例文件下载
链接:https://pan.baidu.com/s/1o_XNGyqM3ywsGoXg-pDOcg
提取码:abcd
关注公众号 ↓
比如说,我想打印我选择的区域
如下图所示

我只想打印前几行

为此,小编封装了一个打印机设置的代码
分别是打印机设置以及逆序打印 代码如下
Sub 打印机设置(工作表 As Worksheet, 打印区域 As String, _Optional 打印方向 As Boolean = False, Optional 纸张大小 As Long = 1, Optional 右边距 As Long = 1, _Optional 左边距 As Long = 1, Optional 上边距 As Long = 2, Optional 下边距 As Long = 1.5, _Optional 左页眉 = "", Optional 左页脚 As String = "", Optional 中心页脚 As String = "", _Optional 右页脚 As String = "", Optional 标题 As String = "")With 工作表.PageSetup.Orientation = IIf(打印方向, xlLandscape, xlPortrait).PaperSize = IIf(纸张大小 = 1, xlPaperA4, xlPaperA5).RightMargin = Application.CentimetersToPoints(右边距) '.LeftMargin = Application.CentimetersToPoints(左边距).TopMargin = Application.CentimetersToPoints(上边距).BottomMargin = Application.CentimetersToPoints(下边距).CenterHorizontally = True '水平中心.LeftHeader = 左页眉.LeftFooter = 左页脚.CenterFooter = 中心页脚.RightFooter = 右页脚.PrintTitleRows = 标题.PrintArea = 打印区域.Zoom = False '自适应缩放.FitToPagesWide = 1.FitToPagesTall = 100End WithEnd SubSub 逆序打印(工作表 As Worksheet)Dim k&, x&k = Application.ExecuteExcel4Macro("Get.Document(50)") '获取整份文档的页数For x = k To 1 Step -1工作表.PrintOut ActivePrinter:="EPSON L130 Series", from:=x, to:=xNextEnd Sub
而调用,也非常的简单
Sub 指定区域打印()Dim Rng As Range, iRow$, YesNo$, Flag As Boolean, strTitle$Dim Sht As WorksheetSet Sht = ActiveSheetOn Error Resume NextSet Rng = Application.InputBox("请选择需要打印的区域", "EXCEL VBA 练习 提示!", , , , , , 8)If Rng Is Nothing Then MsgBox "请重新选择!", 64, "提示!": Exit SubIf Rng.Count = 1 Then MsgBox "区域范围那么小....": Exit SubSet Rng = Intersect(Rng, Rng.Parent.UsedRange)iRow = Application.InputBox("标题行数", "EXCEL VBA 练习 提示!", 1, , , , , 1)If iRow < 0 Then MsgBox "不能为负数...", 64, "提示": Exit SubIf iRow >= 10 Then MsgBox "标题行有那么多...?": Exit SubstrTitle = IIf(iRow = 0, "", "$1:$" & iRow)YesNo = MsgBox("确定:横向 取消:纵向", vbYesNo, "选择打印方向")Flag = IIf(YesNo = 7, False, True)Call 模块.打印机设置(工作表:=Sht, 打印区域:=Rng.Address(0, 0), 打印方向:=Flag, _左页眉:=Format(Now, "yyyy-mm-dd hh:mm:ss"), 左页脚:="制单人:Excel VBA 练习", _右页脚:="第 &P 页,共 &N 页", 标题:=strTitle)Call 模块.逆序打印(Sht)End Sub
代码中
第6至15行,判断用户选择的区域、表头行数以及打印方向,这些都可以封装,我们以后在慢慢优化...
第16行调用自定义函数打印机设置,由于代码放置在命为模块的模块中

输入模块.会自动弹出里面的代码

这里小编使用中文在封装打印机设置,就不在解析,只用工作表 As Worksheet, 打印区域 As String 这两个是必选参数,其余的是可选参数
第17行调用自定义函数 逆序打印参数也只有一个,代码意思也就是从最后一页一直向第一页打印,这样打印出来就不用再次整理...
收工!我们明天见
如果小伙伴有好的思路,可以在小编的公众号留言发给小编研究下
文章觉得有用,点个赞+在看,你的每一次点赞和转发就是小编原创的动力
文章转载自Excel VBA练习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




