乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel支票套打王-利用Excel VBA实现批量打印的思路

excel支票套打王-利用Excel VBA实现批量打印的思路

作者:乔山办公网日期:

返回目录:excel表格制作

今天分享一个VBA实现自动打印的功能,录制宏+修改代码实现。


▍这篇文章你将学到以下知识点:


录制宏并修改代码;instr函数;循环打开工作簿的通用写法;选择文件夹对话框。


我会认真写,希望看完文章后,能在遇到类似问题的某个瞬间能想到:好像我在哪个公众号见过类似的例子和知识点。再回来翻看这篇文章就行了。


▍问题引入:


在知乎Excel有多厉害?这个回答中,大V何明科老师介绍过这个功能。今天我们就来说一下实现的步骤。


▷我自己随便下载了几个表格当做案例附件。


案例表格


案例表格样式


▍实现步骤:


录制宏,获取打印活动表格动作的代码。(没有真实打印机,以pdf虚拟打印机作为例子)


录制宏的到的代码:


修改代码,经过修改和补充,得到最终的代码(初学可以不修改录制宏得到的代码):


1Sub 批量打印() 2Application.ScreenUpdating = False 3 With Application.FileDialog(msoFileDialogFolderPicker) 4 If .Show = -1 Then fl = .SelectedItems(1) & "" 5 End With 6 f = Dir(fl & "*.xls*") 7 Do While f <> "" 8 Workbooks.Open (fl & f) 9 For Each sht In ActiveWorkbook.Worksheets10 If InStr(1, sht.Name, "标准表") > 0 Then11 sht.Select12 With ActiveSheet.PageSetup13 .PaperSize = xlPaperA414 .Zoom = 8015 End With16 ActiveWindow.SelectedSheets.PrintOut IgnorePrintAreas:=False, _17 printtofile:=True, prtofilename:=fl & ActiveWorkbook.Name & sht.Name & ".pdf"18 End If19 Next20 ActiveWorkbook.Close False21 f = Dir22 Loop23 Application.ScreenUpdating = True24 MsgBox "完成"25End Sub

代码超级详解:


1sub过程名 2关闭屏幕刷新提高运行速度 3弹出FileDialog对话框,提示用户选择文件夹作为路径 4如果选择了文件夹,则返回参数-1,如果点取消则返回参数0 5End With 6利用DIR函数取出路径文件夹下的第一个工作簿,并赋值给变量f 7只要能取出来工作簿名称,就做循环,直到取出的文件名为空停止循环 8打开工作簿 9for each函数对打开的活动工作簿中每个表格进行循环10如果工作表名称中存在“标准表”字段,则进行以下循环11激活工作表,为下一步打印做准备12使用pagesetup对象对打印页面进行设置13纸张大小为A4纸14缩放比例为80%15End With16利用printout方法对打印过程进行设置17将表格打印到文件,全路径是活动工作簿的名字+工作表的名字+“.pdf”18 End If19 Next20关闭当前打开的工作簿,不保存21再次使用Dir函数,获取下一个工作簿,第二次使用可以直接写成f=Dir,省略参数22Loop23开启屏幕刷新24MsgBox "完成"25End Sub

运行代码,泡杯茶,等待自己打印完成。


自动打印过程


▍知识点讲解:


■instr函数


指定一字符串在另一字符串中最先出现的位置。


语法:


InStr([start, ]string1, string2[, compare])参数解释:start可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果指定了 compare 参数,则一定要有 start 参数。string1 必要参数。接受搜索的字符串表达式。string2 必要参数。被搜索的字符串表达式。Compare可选参数。指定字符串比较。如果省略 compare,Option Compare 的设置将决定比较的类型。(一般默认不写,特殊情况这里不叙述)

举个例子就很好理解了


InStr(1, sht.Name, "标准表")


这里就表示,在工作表的名字中搜索“标准表”字符串,如果包含这个字符串,他将会返回出现的位置。


InStr(1, “ABCD”, "C") '这里结果会返回3


InStr(1, “ABCDC”, "C") '这里结果仍然会返回3


■选择文件夹对话框


如果要选择文件夹作为路径,参照我的写就可以,是个通用模式。


1选择文件夹 2Sub SelectFolder() 3 '选择单一文件夹 4 With Application.FileDialog(msoFileDialogFolderPicker) 5 If .Show = -1 Then 6 'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)。 7 MsgBox "您选择的文件夹是:" & .SelectedItems(1) 8 End If 9 End With 10End Sub

如果觉得不错,希望点个赞再走哦!


相关阅读

  • excel密码保护-Excel中工作簿的保护

  • 乔山办公网excel表格制作
  • 为了保护我们的Excel工作簿不被别人访问、修改、查看,我们可以通过Excel的保护工作簿功能进行保护状态的设定。常用的保护设定有如下几种方法:标记为最终状态、用密码进行加密、保
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网