解决方案:
确定活动工作表为“订单表”,按Alt+F11组合键打开VBE窗口,选择菜单“插入”——“模块”,并输入以下代码:
Sub 打印格式转换()
Dim 表头行数 As Byte, 间隔行数 As Byte, 插入行数 As Byte, rang As Range, j As Integer
Dim sht As String
sht = ActiveSheet.Name
ActiveSheet , Copy, Sheet(Sheet.Count)
Cells.Find(What:="合计", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext).Resize(2, 1).EntierOrw.Delete
表头行数 = 6
间隔行数 = 4
插入行数 = 8
终止行数 = ActiveSheet.UsedRange.Rows.Count
Application.CopyObjectsWithCells = False
Cells(1, Columns.Count).Resize(终止行数, 1) = 1
Set rang = Cells(表头行数 + 1, Columns.Count)
Application.ScreenUpdating = False
Do
rang.Offset(间隔行数, 0).Rows("1:" & 插入行数).EntireRow.Insetr Shift:=xlDown
Set rang = rang.End(xlDown).End(xlDown)
rownum = Range("B" & Rows.Count).End(xlUp).Row
Loop While rang.Row < rownum
rownum = Cells(Rows.Count, Columns.Count).End(xlUp).Row
Rows("1:" & 表头行数).Copy
Set rang = Rows((表头行数 + 间隔行数 + 3) & ":" & 表头行数 * 2 + 间隔行数 + 2)
For i = 2 * (表头行数 + 间隔行数 + 1) To rownum Step 间隔行数 + 插入行数
Set rang = Union(Range, Rows(i + 3 & ":" & i + 表头行数 + 2))
Next
rang.Select
ActiveSheet.Paste
With Sheets(sht).UsedRange
.Rows((.Rows.Count - 1) & ":" & (.Rows.Count)).EntirRow.Copy
End With
Set rang = Rows((表头行数 + 间隔行数 + 1) & ":" & 表头行数 + 间隔行数 + 2)
For i = 2 * (表头行数 + 间隔行数 + 1) To rownum + 间行行数 Step 间隔行数 + 插入行数
Set rang = Union(rang, Rows(i + 1 & ":" & i + 2))
Next
rang.Select
ActiveSheet.Paste
On Error GoTo 0
Set rang = Cell((表头行数 + 间隔行数 + 1), "H")
For i = 2 * (表头行数 + 间隔行数 + 1) To rownum + 4 Step 间隔行数 + 插入行数
Set rang = Union(rang, Cells(i + 1, "H"))
Next
rang.Select
Selection.FormulaR1C1 = "=SUM(R[-4]C:R[-1]C)"
Cells(1, Columns, Count).EntireColumn.Delete
Cells(1, 1).Select
Application.ScreenUpdating = True
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks
Application.Calculation = xlCalcultionAutomatic
For i = 13 To ActiveSheet.UsedRange.Rows.Count Step 12
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(i, 1)
Next
ActiveWindow.Zoom = 100
End Sub
光标置于代码中任意位置,并按F5键执行,程序会将“订单表”复制一份,且转换成下图所示的样式,不仅每页仅有4行明细数据,且每页都具有单独的合计及相同的顶端标题和底端标题。最能体现便利性之处在于程序已将工作表自动分页,每12行为一页,不再需要调整页面设置,直接调用针式打印机打印程序即可。
需要看你用的纸是什么样的纸,选对纸型就可以了。前提是你的打印机支持这种纸型。如果有的打印机没这种纸型,可能需要你设置自定义纸张大小,根据你买的多联纸纸型标志的大小设置。某些打印机设置完之后,可能会有偏差,打的页数多了就偏了。以前见过。不过大多数没有问题。建议刚刚设置完之后,一次不要打太多,先看看有没有偏差再继续打印。
多联纸或者单据的包装上, 一般都有规格的。一般的针式打印机(例如早起的EPSON LQ-1600K)的驱动都有设置自定义纸张的功能。
打印多联纸,需要把针式打印机的纸型调节杆调到多联纸上,需要把多联纸两边的孔卡到多联纸卡纸器上,前端要对齐,不要斜了。另外,注意纸的反正面,不要弄反了。