2024年2月24日发(作者:)

EXCEL数扰分页打印实例

在工作中经常会碰到EXCEL中的数据要分页打印且每页头几行和最后几行都必乡保留,还要有页码。这也是本人在铁塔工作过程中碰到的一种情况,与大家分享。

一、 实现工作目标

将”订单打印版.xlsm”表中数据(如图1)分页打印(如图2)并隐藏第6行说明

图1

每页打印8行内容

每页打印都包含此内容

每页打印都包含此内容

图2

插入页脚分页

二、 实际操作步骤

1.按如下图设置单元格:

添加打印按钮,填加宏代码后指向该宏

3、新建打印模板文件

打印模板数据行数

本行打印自动隐藏

空白行数为8行,并设置好行高,列宽等

第6行隐藏后没有张2页

4、按ALT+F11将下列代码粘贴在代码窗口中:

Sub 订单打印PDF()

If [订单总数] = 0 Then Exit Sub

Dim twb As Workbook

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim m As Integer

Dim n As Integer

Dim Mystr1 As String

Dim Mystr2 As String

Set twb = ( & "DD_")

yAlerts = False

Updating = False

("铁塔需求订单确认表").Rows(6).Hidden = True

m = Int([订单总数] / 8)

n = [余数]

Mystr1 = "第"

Mystr2 = "页"

If n = 0 Then

For k = 1 To m

For i = 1 To 8

For j = 1 To 17

("铁塔需求订单确认表").Cells((i + 6), j) =

((i + 6 + (k - 1) * 8), j)

Next j

Next i

("铁塔需求订单确认表").Footer =

Mystr1 & k & Mystr2

("铁塔需求订单确认表").Activate

ut Copies:=1, Collate:=True

Next k

Else

If [订单总数] < 8 Then

For i = 1 To n

For j = 1 To 17

("铁塔需求订单确认表").Cells((i + 6), j) =

((i + m * 8 + 6), j)

Next j

Next i

("铁塔需求订单确认表").Footer = Mystr1

& 1 & Mystr2

("铁塔需求订单确认表").Activate

ut Copies:=1, Collate:=True

Else

For k = 1 To m

For i = 1 To 8

For j = 1 To 17

("铁塔需求订单确认表").Cells((i + 6), j) =

((i + 6 + (k - 1) * 8), j)

Next j

Next i

("铁塔需求订单确认表").Footer =

Mystr1 & k & Mystr2

("铁塔需求订单确认表").Activate

ut Copies:=1, Collate:=True

Next k

Sheets("铁塔需求订单确认表").Range("a7:q14") = ""

For i = 1 To n

For j = 1 To 17

("铁塔需求订单确认表").Cells((i + 6), j) =

((i + m * 8 + 6), j)

Next j

Next i

("铁塔需求订单确认表").Footer = Mystr1

& m + 1 & Mystr2

("铁塔需求订单确认表").Activate

ut Copies:=1, Collate:=True

End If

End If

Set twb = Nothing

yAlerts = True

Updating = True

End Sub

5.将宏代码窗口关闭,另存为启用宏的表格。

6.将PDF打印设置成默认打印机。

7.点击表格中的按钮“打印”就可以生成我们所需要的文件了。

本文的讲解到此就结束了。谢谢!