Excel VBA如何打印当前页以及从当前页打印到结束 wps VBA打印 图文

2021年2月20日16:31:17Excel VBA如何打印当前页以及从当前页打印到结束 wps VBA打印 图文已关闭评论 1,712 views
微信公众号 【EXCEL880】 QQ群【341401932】
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com

VBA里不能直接获得当前页 可以通过分页符位置和当前活动单元格位置判断当前页 这样就可以打印了 然后获得总页数 再打印到总页数即可

  1. Sub 打印当前页_微信EXCEL880B()
  2. '如果当前表是空表则退出程序
  3. '微信EXCEL880B 教程咨询 付费定制
  4. If IsEmpty(ActiveSheet.UsedRange) Then MsgBox "当前工作表为空!", 64, "出错": Exit Sub
  5. If Intersect(ActiveSheet.UsedRange, ActiveCell) Is Nothing Then MsgBox "请选择已用区域!", 64, "出错": Exit Sub
  6. Dim 水平分页符 As Integer, 垂直分页符 As Integer, Hrow As Integer
  7. Dim 当前页 As Integer, m As Integer, n As Integer, Vcolumn
  8. 水平分页符 = ActiveSheet.HPageBreaks.Count '记录水平分页符数量
  9. 垂直分页符 = ActiveSheet.VPageBreaks.Count '记录垂直分页符数量
  10. '获取纵当前页的分页符行号
  11. For n = 1 To 水平分页符 '横向循环
  12. Hrow = ActiveSheet.HPageBreaks(n).Location.Row '返回分页符位置的单元格行号
  13. If Hrow > ActiveCell.Row Then Exit For '如果大于当前行号则退出循环
  14. Next
  15. '获取当前页的横向位置
  16. For m = 1 To 垂直分页符 '纵向循环
  17. Vcolumn = ActiveSheet.VPageBreaks(m).Location.Column '返回分页符位置的单元格列号
  18. If Vcolumn > ActiveCell.Column Then Exit For '如果大于当前列号则退出循环
  19. Next
  20. '获取当前页的纵向位置
  21. If ActiveSheet.PageSetup.Order = xlOverThenDown Then
  22. 当前页 = (n - 1) * (垂直分页符 + 1) + m '记录当前页的页数
  23. Else
  24. 当前页 = (m - 1) * (水平分页符 + 1) + n '记录当前页的页数
  25. End If
  26. If MsgBox("当前单元格在本工作表中处于" & Chr(10) & "第" & 当前页 & "页" & Chr(10) & "是否打印当前页?", 65, "友情提示") = vbOK Then
  27. ActiveSheet.PrintOut From:=当前页, To:=当前页 '打印当前页
  28. End If
  29. End Sub
  30.  

打印到最后一页 只需要改倒数第3行的位置

  1. ActiveSheet.PrintOut From:=当前页, To:=Activesheet.PageSetup.Pages.Count  '打印当前页到最后一页
表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页