求教excel利用宏自动打印问题

我做了一个奖状模板
我录制了一个宏打印
我在A1里输入“1”,让后打印第一个奖状。
输入“2”,然后打印第二个奖状。
这里的“1,2”是提前编号的序号,输入不同的序号,奖状里会显示不同的人名。
现在想求高手,帮我修改一下宏文件实现自动打印功能:
在A3和A5里分别输入开始和结束的序号,如5和10,就能自动打印第5个到第10个人的奖状。
谢谢!!
我录制的宏文件如下:
Sub 打印1to3()
'
' 打印1to3 Macro
'

'
Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
Range("C1").Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Range("A1").Select
ActiveCell.FormulaR1C1 = "2"
Range("C1").Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Range("A1").Select
ActiveCell.FormulaR1C1 = "3"
Range("D1").Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
End Sub

插入模块
把如下代码复制进去。"sheet1"是工作表名,根据实际修改。复制好代码后在表中插入一个按钮,右键点击按钮---指定宏----选择这个打印宏。
Sub 打印()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Call dy
End Sub
Sub dy()
Dim a%, b$, c$, abc$
a = Sheets("sheet1").Cells(3, 1).Value
b = Sheets("sheet1").Cells(5, 1).Value
If a < b Then
a = a + 1
Sheets("sheet1").Cells(3, 1).Value = a
Call 打印
End If
End Sub
Private Sub CommandButton1_Click()
Call 打印
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-14
这种情况我都用word合并打印功能来实现。
excel配合宏也肯定是可以。
把数据表格式发上来吧追答

把你的宏改成如下形式:

Sub 打印(m As String)
'
' 打印 m 页 Macro
'

'
Range("A1").Select
ActiveCell.FormulaR1C1 = m
Range("C1").Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Range("A1").Select

End Sub

另加一个如下的宏:
Sub 打印多页()
'在单元格A3中输入起始页号,单元格A5中输入终止页号
Dim i, j As Integer
i = Application.ActiveSheet.Cells(3, 1).Value
j = Application.ActiveSheet.Cells(5, 1).Value
If i = j Then
打印 (i)
ElseIf i > j Then
steps = -1
For k = i To j Step steps
打印 (i)
Next k
Else
For k = i To j
打印 (i)
Next k
End If

End Sub
在单元格设置好数值,执行打印多页宏

追问

谢谢你的指教,第一个在宏里面有显示,不能打印。
第二个可以打印,但是打印的结果把第三页打了3编,4,5页面有打印,请帮忙修改一下!
谢谢你在百忙中给予解答!!!

追答

不知道你表中是什么情况啊
就是你打印的代码中,那个A1,C1 第三页是D1 这是???
为什么第一、二页是C1 而第三页是D1??
没数据表,不好整

追问

你好,下面是请柬表

第一张表:客人每当

第二张表是请柬草图:

第二张表的序号A1和请柬人名用vlookup函数链接完毕。

现在,想通过A3和A5分别设置请柬的开始和结束页,实现自动打印。

也就是打印第三到第五个人的三张请柬。

追答

没有啊???

追问

网上给了好几个方案,感觉你的第二种方案最接近我的要求,现在现在存在的问题是,每打印一张,A1里的序号没有增加。因为我的打印内容是通过A1的序号变化的。
看你是否有时间,把你的第二套方案修改一下,谢谢!

追答

最好的办法是你把你的两个文件发过来,我搞清楚它的打印方法。然后再回给你。

追问

问题解决了,你的方案虽然没有成功,也谢谢你耐心的解答。

第2个回答  2018-12-25
写个for循环,把你录制的宏放进循环里面,定义一个数组用来存放人名即可
第3个回答  2018-12-14
我打奖状、毕业证、通知书都是利用 Word 的邮件合并打印功能
第4个回答  2018-12-14
Sub DY()
For i=2 to 5
[a1]= Cells(i,1)
Print
Next
end sub