这两天公司盘点,想打印些盘点标签,类似下图这样的,在网上搜了下,没找到合适的案例,就自己做了份。

标签样式


首先,做个物料表

我的是这样的,第一列,填写序号,这个挺重要的,就是依据它来打印的。序号按1,2,3顺序填写。

物料表

其它列,填写你需要的内容。

先说下,我比较懒,我是先盘点好,最后打印的标签,数量也打印的。

做标签页

这个和平时自己做表格一样,你怎么顺眼怎么做。下图是我需要的,一页A4纸排了8个小标签

标签排版

上图中有个E9单元格,后面会用到。

标签页公式


标签页填写的公式

看上图,很简单的一个公式,“=VLOOKUP($E$9,物料名称!$A:$D,4,0)”,从物料名称表里按顺序填写名称。

第2个标签页,为“=VLOOKUP($E$9+1,物料名称!$A:$D,4,0)”,比第1个,+1,以此类推,第8个标签页,+7。

VLOOKUP是横着查找,$符号是绝对引用的意思,不带$为相对引用。

打印代码

Sub 打印标签() Dim a As Integer '定义变量a为整数 Dim b As Integer '定义变量b为整数 Dim c As Integer '定义变量c为整数 'a = InputBox("请输入开始打印序号") '若要使用这句,把本行最前面的“'”删除,下同。 '同时,须把下面的“a = 1 及 b = 597 ”删除,或者在其前面加上豆撇 ' 'b = InputBox("请输入结束打印序号") '下面2行,是我图省事,自己用的。 a = 1 '从序号1开始 b = 597 '到序号597结束 c = (b + 8) / 8 '你一页有几个标签,8就是几。比如你一页排了4个标签,这句就是c = (b + 4) / 4 For i = a To c '从序号a打印到序号c,本例中,a是1,c = (b + 8) / 8 = (597 + 8) / 8 = 75.625 Range("E9").Value = a '把E9单元格的数字传给变量a 'ActiveSheet.PrintOut '若你只有一个打印机,或者打印前先选定了打印机,可以使用这句,会使用默认打印机打印。 '下句可以指定使用哪个打印机来打印。From:=1, To:=1,可以指定打印第几页至第几页。 ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Preview:=False, ActivePrinter:="Microsoft Print to PDF" a = a + 8 '数字8是一页的标签数量,若你一页排了4个标签,就改成a = a + 4 Next i End Sub


VBA代码

这个代码,很简单,注释我也写的挺清楚的,使用应该没啥问题。

若你的WPS没有安装VBA,可以从网上下个,在评论区我也贴个下载链接。excel自带vba,不用下。

对于E9单元格,若不想看到数字,可以设置字的颜色为纸的颜色,比如”白色“。

最后,若你的表格上看不到“开发工具”,就是下图中的最后那个。若有,点“宏”,即可看到“打印标签”项。

开发工具

按下图顺序即可找到。文件→选项→自定义功能区,勾选“开发工具”。WPS和Excel基本相同。

开发工具位置

如有错误,欢迎朋友们指正,以免误人。

忘记了件事,打印机的名字在系统打印机和扫描仪页查看,照抄填写到代码里即可。

查看打印机名字