让WORD在打印时自动加上打印编号并自动递增问题的提出:1、QA打印
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
时,有时需要一份打印多份,但每份的编号需要从初始编号开始每份递增,如初始编号为123450,打印100份,则每份编号从123450到1235550;2、打印装订成册的记录,一般都是30-50页,页码从1到30-50以上的操作,目前都是十分原始,只能每打印一份,改一次编码,再打印一份……毫无效率在网上找了一下,发现有同类的问题,其处理方式基本都是使用宏进行循环嵌套来完成,即设定好初始编号和打印份数,让宏自动执行:在指定位置输入编号,打印,删除编号,输入下一个递增的编号,打印,删除编号……根据网上的宏代码,结合公司的情况,调试了一下,得到以下代码(红色字体为代码,绿色为注释):SubPrintCopies()''让WORD在打印时自动加上打印编号并随打印份数自动递增''DimCopyCount'定义变量CopyCount,用于定义打印份数DimStartNo'定义变量StartNo,用于定义打印起始编号DimPrintNo'定义变量PrintNo,定义打印时输入到文本中的编号Dimi'定义变量i,循环打印时的辅助数值Dimd'定义变量d,循环删除输入编号的辅助数值CopyCount=InputBox("Pleaseenterthenumberofcopiesyouwanttoprint","Pleaseenterthenumberofcopiesyouwanttoprint",1)'弹出对话框,询问输入的份数,默认1份IfCopyCount=""ThenExitSubEndIf'if语句,如果没输入打印份数,则结束宏的运行StartNo=InputBox("Enterthestartingnumberyouwanttoprint","Enterthestartingnumberyouwanttoprint",1)'弹出对话框,询问打印起始编号,默认编号1IfStartNo=""ThenExitSubEndIf'if语句,如果没输入起始编号,则结束为宏的运行PrintNo=StartNo-1'赋值PrintNo,为起始编号-1Fori=1ToCopyCount'for语句,循环定义i从1至设定的打印份数,循环执行以下语句PrintNo=PrintNo1'赋值PrintNo,起始编号开始,每循环一次累加1Selection.TypeTextText:=PrintNo'在文本光标处输入PrintNo定义的编号Application.PrintOutFileName:="",Range:=wdPrintAllDocument,Item:=_wdPrintDocumentWithMarkup,Copies:=1,Pages:="",PageType:=wdPrintAllPages,_ManualDuplexPrint:=False,Collate:=True,Background:=True,PrintToFile:=_False,PrintZoomColumn:=0,PrintZoomRow:=0,PrintZoomPaperWidth:=0,_PrintZoomPaperHeight:=0'Application.PrintOut执行打印命令,其他为参数通过录制宏得到,无需理会Ford=1ToLen(PrintNo)'for语句,循环定义d从1至PrintNo的字符数[Len(PrintNo)],每次执行TypeBackspace,直至把输入的编号删除完成Selection.TypeBackspaceNextNextEndSub具体操作如下1、打开需要编号的文件,把文件另存为“启用宏的Word文档”2、点击视图——宏3、弹出的宏窗口中,宏名随便输个名字,宏的位置一定要选择你打开的文件,选择其他几个是无法运行的,选好后点击创建。4、弹出的VBA编辑器中,用本文中的代码覆盖原来的代码(Sub至EndSub)点击保存或Word图标返回文档中,或点关闭。5、把光标移动到你需要输入编号的地方,但不要输入任何编号。注意,编号的字体、字号、颜色等需要提前设置好,不然打印出来的就不是你要的效果。6、再次点击视图——宏,选择刚才建好的宏PrintCopies,然后点击运行,在弹出界面输入打印的份数,确定后,第二个弹出界面输入起始编号,确定后就会自动打印。注意,此时打印启用的是默认打印机,请提前设置后,确定后就无法修改的;弹出的两个界面,任意一个取消则终止打印。7、打印效果(此处选用了PDF打印机,所以可以截图):