你有没有遇到过这样的崩溃瞬间:手里握着上千个客户信息,老板让你一个一个填到固定的模板里,再打印出来?
其实这种“数据多、模板死、打印烦”的场景,打工人都懂。今天就给你分享一段VBA代码,让它像流水线上的机器人一样,自动帮你填表、打印、清空,几百上千个客户一键全搞定。
代码逻辑
你要做的步骤其实特别机械:
1. 从客户信息表里读一行数据 2. 把信息填入模板表对应的位置上 3. 打印模板(单个客户信息) 4. 重复1~3步,直到所有都完成 5. 最后清空模板,留着下次再用
VBA就是你的“自动抄写员”。代码里的 循环(For i = 2 To lastRow) 就是让机器一遍遍跑客户名单;每次跑的时候,把姓名、电话这些数据塞到模板的指定格子(比如B2、D2);然后执行打印;全部跑完后再清空填过的单元格,保证模板恢复成空白,下次打开还是干干净净。
直接上代码!复制粘贴就能用
Sub PrintAllCustomers() Dim wsData As Worksheet Dim wsTemplate As Worksheet Dim lastRow As Long Dim i As Long Dim customerID As String, name As String, gender As String Dim phone As String, email As String, city As String, regDate As String ' 设置工作表对象 Set wsData = ThisWorkbook.Worksheets("客户信息明细") Set wsTemplate = ThisWorkbook.Worksheets("单个客户信息模板") ' 获取数据最后一行(A列) lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row ' 循环处理每一行数据(从第2行开始,跳过标题) For i = 2 To lastRow ' 读取客户信息 customerID = wsData.Cells(i, 1).Value name = wsData.Cells(i, 2).Value gender = wsData.Cells(i, 3).Value phone = wsData.Cells(i, 4).Value email = wsData.Cells(i, 5).Value city = wsData.Cells(i, 6).Value regDate = wsData.Cells(i, 7).Value ' 将数据填入模板对应单元格 With wsTemplate .Range("B2").Value = customerID .Range("D2").Value = name .Range("B3").Value = gender .Range("D3").Value = phone .Range("B4").Value = email .Range("D4").Value = city .Range("B5").Value = regDate End With ' 打印当前客户模板(直接打印1份,如需预览可将Preview参数设为True) wsTemplate.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False Next i With wsTemplate .Range("B2:B5").ClearContents .Range("D2:D4").ClearContents End With MsgBox "所有客户信息打印完成!"End Sub使用小贴士
• 模板里填的位置(比如B2、D2)你要提前对好,如果表格结构不一样,记得改代码里的单元格地址。
有了这段VBA,再多的客户资料都能一键打印、自动清空,从此告别机械劳动。赶紧试试吧!
📢 重要通知:不想错过「Excel每日一学」的每一篇干货?由于公众号推送规则调整,“设为星标” 是确保您能准时收到我们原创内容的最佳方式。
✨ 请您花2秒完成:
点击顶部公众号名称,进入主页。
点击右上角 【…】,选择 【设为星标】。
您的👍 点赞 +
转发 +
在看,是对我们持续分享的最大支持!
感谢您阅读至此。
关注本公众号,后台发消息:20260227 获取代码示例文件
夜雨聆风