使用vba批量对excel表格进行分页处理,生成的箱标签确保在1张A4纸上
浏览人数:
我们以一个工作中的实际情况为例,来说明一下情况,生产的产品总会有包装,而包装又需要粘贴标签,而标签的组成中除了产品的名称,规格等,还有当前箱数,以及总箱数。 如下图:

如果每箱的标签修改一个,打印1个的话,太浪费时间,工作效率就很低。
如果能把所有的标签生成,打印就OK了。
而生成当前箱号以及总箱数,可以使用函数进行解决。如下图,我每10行设定1个箱标签,使用了公式:
="箱号/总箱数: "&INT(ROW()/10)+26&" /90"

但这里面有一个问题,如果直接生成,当打印的时候,会存在有些页显示的是一半的标签。

为了避免这种情况的发生,可以使用excel表格中的分页功能。
比如选择某一行后(即要插入分页的位置下一行),点击页面菜单下的插入分页符功能,如下图:

以开始的实际情况为例,每一箱一个标签,有90箱,则要插入90个分页符,这工作量还是有点大啊,如果是300箱标签呢?
能不能自动插入分页符,那就使用vba功能。对于重复的工作,写1个循环,把循环的条件设定好就OK了。
使用excel的宏录制,得到了基础的单次插入分页符的代码:
选择某个行后,点击插入分页,重要的部分就是ActiveSheet.HPageBreaks.Add Before:=Range("A31")
那我们对代码进行修改,添加循环功能就可以了。
每10行进行一下分页,因为标签是从26开始,生成到90标签,则循环的次数就是90-26再乘10.使用vba几秒钟就可以搞定了。再打印的时候,就能确保每个箱标签打印在1张纸上了。

如果每箱的标签修改一个,打印1个的话,太浪费时间,工作效率就很低。
如果能把所有的标签生成,打印就OK了。
而生成当前箱号以及总箱数,可以使用函数进行解决。如下图,我每10行设定1个箱标签,使用了公式:
="箱号/总箱数: "&INT(ROW()/10)+26&" /90"

但这里面有一个问题,如果直接生成,当打印的时候,会存在有些页显示的是一半的标签。

为了避免这种情况的发生,可以使用excel表格中的分页功能。
比如选择某一行后(即要插入分页的位置下一行),点击页面菜单下的插入分页符功能,如下图:

以开始的实际情况为例,每一箱一个标签,有90箱,则要插入90个分页符,这工作量还是有点大啊,如果是300箱标签呢?
能不能自动插入分页符,那就使用vba功能。对于重复的工作,写1个循环,把循环的条件设定好就OK了。
使用excel的宏录制,得到了基础的单次插入分页符的代码:
Sub 分页() ActiveWindow.ScrollRow = 17 Range("A31:B31").Select ActiveSheet.HPageBreaks.Add Before:=Range("A31") ActiveWindow.ScrollRow = 29 Range("A41:B41").Select ActiveSheet.HPageBreaks.Add Before:=Range("A41") End Sub |
选择某个行后,点击插入分页,重要的部分就是ActiveSheet.HPageBreaks.Add Before:=Range("A31")
那我们对代码进行修改,添加循环功能就可以了。
Sub 分页() a = 10 Do While a <= (90 - 26) * 10 b = a + 1 Cells(b, 1).Select ActiveSheet.HPageBreaks.Add Before:=Cells(b, 1) a = a + 10 Loop End Sub |
每10行进行一下分页,因为标签是从26开始,生成到90标签,则循环的次数就是90-26再乘10.使用vba几秒钟就可以搞定了。再打印的时候,就能确保每个箱标签打印在1张纸上了。
制作表格zhizuobiaoge.com
Copyright@all rights reserved