如何用Excel VBA批量打印文件
批量打印文件夹中的多个Word文档

批量打印⽂件夹中的多个Word⽂档问题:批量打印⽂件夹中的多个Word⽂档⽅法1 利⽤VBA程序打开⼀个新的Excel⽂档(不要求在要打印的Word⽂档所在的⽂件夹中),选择【开发⼯具】⼀栏(没有的话在栏⽬⼀⾏任意⼀处单击右键,点【⾃定义功能区】,在【主选项卡】表中的选项中选上【开发⼯具】,点击确定),点击Visual Basic,双击 Sheet1(Sheet1)表,在出现的代码框中粘贴:Sub 批量打印WORD⽂档()Dim fileToOpen, GetOpenFilename, App, iFilefileToOpen = Application.GetOpenFilename(filefilter:="Word⽂档(*.do*),*.do*", FilterIndex:=4, Title:="请选择要处理的⽂档(可多选)", MultiSelect:=True)If Not IsArray(fileToOpen) ThenMsgBox "你没有选择⽂件", vbOKOnly, "提⽰": Exit SubElse: Set App = CreateObject("Word.Application")For Each iFile In fileToOpenSet WrdDoc = App.Documents.Open(iFile)App.Documents(WrdDoc).PrintOutApp.Documents(WrdDoc).Close FalseT = T + 1NextEnd IfMsgBox "操作完成!!" & vbCrLf & "打印了 " & T & " 个⽂件。
", vbOKOnly, "提⽰"End Sub点击运⾏按钮(F5),会提⽰”请选择要处理的⽂档(可多选)”,按提⽰操作即可。
VBA 中的文件打印与打印设置技巧

VBA 中的文件打印与打印设置技巧在使用 Visual Basic for Applications(VBA)编程时,我们经常会遇到需要打印文件或设置打印参数的需求。
本文将介绍一些在 VBA 中实现文件打印和打印设置的技巧,帮助你更高效地处理打印任务。
一、文件打印技巧1. 打印当前活动工作簿如果你需要打印当前活动的工作簿,可以使用`ActiveWorkbook.PrintOut`方法。
该方法会直接打印整个工作簿,默认使用默认打印机和设置。
示例代码:```vbaSub PrintActiveSheet()ActiveWorkbook.PrintOutEnd Sub```2. 打印指定工作表如果你只想打印工作簿中的某个特定工作表,可以使用`Worksheets.PrintOut`方法。
该方法允许你指定打印范围、打印份数等参数。
示例代码:```vbaSub PrintSpecificSheet()Worksheets("Sheet1").PrintOut Copies:=2, Collate:=TrueEnd Sub```3. 打印指定区域有时候,你可能只需要打印工作表中的某个特定区域。
在这种情况下,可以使用`Range.PrintOut`方法。
该方法可以打印指定的区域,并允许你设置打印份数、打印方向等参数。
示例代码:```vbaSub PrintSpecificRange()Range("A1:D10").PrintOut Copies:=3, PrintOrientation:=xlLandscapeEnd Sub```二、打印设置技巧1. 设置打印区域通过设置打印区域,你可以控制打印的范围,避免不必要的打印内容。
在VBA 中,我们可以使用`PageSetup.PrintArea`属性来设置打印区域。
示例代码:```vbaSub SetPrintArea()ActiveSheet.PageSetup.PrintArea = "$A$1:$D$10"End Sub```2. 设置打印标题打印标题可以帮助你更好地标识打印的内容。
巧用Excel与VBA实现证书批量打印

巧用Excel与VBA实现证书批量打印作者:何浩平易爱东扶琨来源:《发明与创新.教育信息化》2015年第04期【摘〓要】学校经常需要打印大量的奖状、荣誉证书,不论是Word逐张打印还是邮件合并的方法操作,不是麻烦就是复杂。
笔者根据多年工作经验,总结出用一套用Excel实现证书批量打印的简便方法。
【关键词】批量打印;VBA;EXCEL一、技术需求奖状、荣誉证书的打印是学校管理中经常遇到的工作,每逢期末都有大量的奖状需要打印。
一般的方法是用Word制作出一个模版,将头衔、获奖内容、落款都设置编排好,只将姓名这一位置留空,填一个打一张,很多学校现今仍采用这一方法。
这种方法有很多不便:首先是效率低下,不断地输入姓名,改字体字号,再按打印,打完一类奖项还要改为另一项获奖名称。
结果是自己忙个不停,打印机却基本空闲;其次是当工作量大时,难免会出错,一旦出错,更是手忙脚乱。
当然,也有教师建议采用Excel加Word结合的邮件合并方式,在Excel中输入名单,然后用Word邮件一次性合并到文档中。
此方法确实有效,但操作复杂,要设置插入Word域,每次都要连接数据库,需要专业知识才能顺利完成。
如果打印量不大,这样的方式每次打印都要连接数据库,操作实在麻烦。
笔者思索,有没有更加可靠、便捷、一劳永逸的办法呢?二、现状分析Word邮件合并方式其实质就是利用Word进行排版,再用插入Word域的方法调入Excel 数据作为变量,实现批量打印。
我们能否抛开Word,简化操作,仅在Excel中完成呢?答案是肯定的。
Excel本身是可以进行文字编辑排版的,如果我们在一个工作簿中设置两个工作表,一个作为数据源,另一个排版设置成打印的模版,只留姓名、奖项等作为变量用VBA脚本及函数载入,这样就完美地解决了前面所述问题了。
三、技术实现1. 制作数据源。
新建一个Excel文件,将第二个工作表标签更名为“数据源”,输入所有获奖名单。
A列中输入姓名,B列中输入获奖名称。
巧用VBA编程实现EXCEL电子表格的批量自动打印

巧用VBA编程实现EXCEL证件的批量打印夏教荣陈文涛(湖南省邵阳县白仓镇中学421114)摘要介绍了在EXCEL中如何使用VBA,通过实例论述了在EXCEL中可以通过VBA编程实现含有照片的电子证件或表格批量自动打印,提高了EXCEL在实际应用中的工作效率及节省人力资源。
关键词VBA编程自动打印EXCEL一VBA简介1、什么是VBA?VBA是Visual Basic For Application的缩写,它是以Visual Basic为发展基础的语言。
在Office软件中,VBA应用程序能够在Word、Access、Excel等之间进行交互式应用,加强了应用程序间的互动。
VBA是VB的应用程序版本,可以理解为“寄生在Office办公软件中的VB”,可以看作是VB语言的一个子集。
VBA使Office形成了独立的编程环境。
2、VBA与Visual Basic的关系1)、VB用于开发Windows应用程序,其代码最终被编译为可执行程序。
而VBA是用于控制已有应用程序的自动化操作,其代码为解释。
2)、VB拥有独立的开发环境,而VBA必须集成在已有的应用程序中(Excel等)。
3)、VB开发出来的应用程序在脱离开发环境后仍能执行,而VBA编写出来的程序必须在访问集成应用程序(Excel等)的基础上进行。
尽管有以上不同,但它们仍然非常相似。
都使用相同的语言结构。
两者的程序的语法及程序流程完全一样。
二、在Excel中使用VBA1、进入VBA的方法下面以Office2010为例说明来进入VBA的方法:功能区中有一个“开发工具”选项卡,在此可以访问 Visual Basic 编辑器和其他开发人员工具。
由于 Office 2010 在默认情况下不显示“开发工具”选项卡,因此必须使用以下过程启用该选项卡:1)、在“文件”选项卡上,选择“选项”打开“Excel 选项”对话框。
2)、单击该对话框左侧的“自定义功能区”。
excel表格怎么设置批量打印

excel表格怎么设置批量打印Excel中的表格数据具体该如何进行批量打印的处理呢?其实设置表格批量打印的方法不难?下面是由店铺分享的excel表格批量打印的教程,不懂的朋友会请多多学习哦。
excel表格设置批量打印的教程批量打印步骤的方法:现在是以一个EXCEL有6个工作表为例,宏代码为下:Excel表格使用6大技巧一、让不同类型数据用不同颜色显示在工资表中,如果想让大于等于2000元的工资总额以“红色”显示,大于等于1500元的工资总额以“蓝色”显示,低于1000元的工资总额以“棕色”显示,其它以“黑色”显示,我们可以这样设置。
1.打开“工资表”工作簿,选中“工资总额”所在列,执行“格式→条件格式”命令,打开“条件格式”对话框。
单击第二个方框右侧的下拉按钮,选中“大于或等于”选项,在后面的方框中输入数值“2000”。
单击“格式”按钮,打开“单元格格式”对话框,将“字体”的“颜色”设置为“红色”。
2.按“添加”按钮,并仿照上面的操作设置好其它条件(大于等于1500,字体设置为“蓝色”;小于1000,字体设置为“棕色”)。
3.设置完成后,按下“确定”按钮。
看看工资表吧,工资总额的数据是不是按你的要求以不同颜色显示出来了。
二、建立分类下拉列表填充项我们常常要将企业的名称输入到表格中,为了保持名称的一致性,利用“数据有效性”功能建了一个分类下拉列表填充项。
1.在Sheet2中,将企业名称按类别(如“工业企业”、“商业企业”、“个体企业”等)分别输入不同列中,建立一个企业名称数据库。
2.选中A列(“工业企业”名称所在列),在“名称”栏内,输入“工业企业”字符后,按“回车”键进行确认。
仿照上面的操作,将B、C……列分别命名为“商业企业”、“个体企业”……3.切换到Sheet1中,选中需要输入“企业类别”的列(如C列),执行“数据→有效性”命令,打开“数据有效性”对话框。
在“设置”标签中,单击“允许”右侧的下拉按钮,选中“序列”选项,在下面的“来源”方框中,输入“工业企业”,“商业企业”,“个体企业”……序列(各元素之间用英文逗号隔开),确定退出。
excel怎么利用vba实现批量套打快递单批量打印单据?

excel怎么利⽤vba实现批量套打快递单批量打印单据?excel vba 批量套打快递单,批量打印单据,可以⾃定义修改设置新的格式。
1、设置快递单的⾃定义纸张。
选择对应打印机-点击打印服务器属性-勾选创建新表单-输⼊表单名称-填写对应尺⼨-点击保存表单(快递单的⾼度=1.27cm×边孔数量)2、设置纸张规格。
选择对应打印机-右键点击打印⾸选项-打开⾼级选项卡-纸张规格选择新增的⾃定义纸张3、设置进纸规格。
选择对应打印机-右键点击属性-打开设备设置-进纸器选择新增的⾃定义纸张4、下载快递套打模板。
测试打印根据实际的偏移情况进⾏调整设置,调整边距和缩放⽐例点击设置打印边距;1、打印明细字段名修改⽅法1)修改【打印明细】字段名,也可以变化前后顺序,不需要的字段也可以删除。
2)同步修改【参数】表内D列对应的名称。
3)E列是⾃动更新不⽤更新2、新增调整修改打印字段位置⽅法1)在【参数】内A列添加或者修改字段名,⾃定义⾃⼰明⽩即可。
2)在【参数】内B列添加此字段在【打印模板】对应⾏数。
3)在【参数】内C列添加此字段在【打印模板】对应列数。
4,在【参数】内D列添加此字段在【打印明细】对应表头字段名。
3、设置新的打印模板1)【打印模板】可以删除背景,添加新的快递单背景,或者设置需要打印的表单。
2)设置完毕新的格式后设置新的打印区域。
3)修改【参数】内各字段对应数据。
4、具体VBA编程如下,复制内容到剪贴板Private Sub 打印全部数据_Click()config = vbYesNo + vbQuestion + vbDefaultButton1ans = MsgBox("你确认打印全部数据吗?", config, "如风达")If ans = vbYes ThenDim A&, B&, C&, D$, E$,R1&, C1&, R2&, C2&, R3&, C3&, R4&, C4&, SF$'当前⼯作表名SF = '打印明细的最后列,⾏R1 = Sheets("打印明细").UsedRange.Rows.CountC1 = Sheets("打印明细").UsedRange.Columns.Count'参数的最后列,⾏R2 = Sheets("参数").UsedRange.Rows.CountC2 = Sheets("参数").UsedRange.Columns.Count'更新打印位置对应列For B = 2 To R2Sheets("参数").Cells(B, 5) = ""For A = 1 To C1If Sheets("参数").Cells(B, 4).Text = Sheets("打印明细").Cells(1, A).Text ThenSheets("参数").Cells(B, 5) = AEnd IfNextNext'查询指定订单的信息For R4 = 2 To R1For A = 2 To R2If Sheets("参数").Cells(A, 5).Text <> "" Then'⽣成明细列C4 = Sheets("参数").Cells(A, 5).Text'⽣成⽬标对应⾏列R3 = Sheets("参数").Cells(A, 2).TextC3 = Sheets("参数").Cells(A, 3).TextActiveSheet.Cells(R3, C3).Value = Sheets("打印明细").Cells(R4, C4).Text End IfNextActiveSheet.PrintOut From:=1, To:=1NextMsgBox "打印完成!", vbInformationIf ans = vbNo ThenExit SubEnd IfEnd IfEnd Sub。
利用Excel的宏批量打印信封

利用Excel的宏批量打印信封Excel是一款功能强大的办公软件,而其强大的功能并不是都浮在表面上,需要我们在日常工作中不断地应用和挖掘,才能逐渐体会其博大精深之处。
在日常工作和生活中,书写信封是避免不了的,特别是文书部门,批量书写信封更是常有的事情,Excel可以帮助我们很好地完成这些琐碎的工作。
利用Excel批量打印信封大致可以分为四个步骤:一、设置打印页面进入Excel,新建一个工作簿,选定工作表“sheet1”。
第一步:定义打印页面大小⒈测量信封的实际长和宽;⒉在“文件”菜单下选择“页面设置”命令;⒊单击“选项”按钮,根据测量的实际尺寸自定义打印页面的大小。
第二步:在打印页面内制作打印面板通过调整行高、列宽以及在“页面设置”命令中调整页边距的数值,使邮政编码打印在信封左上角的方框内,定义收件人地址、收件人名称和寄件人名称、地址、邮编的打印位置(如图1所示)。
图1 打印页面注意事项:⒈邮政编码被分为六个单独的数字分别放在A1~F1六个单元格中;⒉为了便于在打印过程中不断变换打印内容,将收件人地址、收件人名称和寄件人名称、地址、邮编分别放置在单元格A3、A4、H5、H6、H7中,为了保证收件人名称位于信封的居中位置,利用Excel的“合并及居中”功能,使单元格A4~N4的格式为跨列居中。
二、输入打印内容选定工作表“sheet2”,根据打印内容建立如下表格,为了与“sheet1”中邮政编码的格式保持一致,邮政编码同样被分为六个单独的数字分别放入A~F 六列的单元格中,并根据格式要求在表格中逐行输入待打印的内容,(如图2)。
图2 打印内容三、建立宏所建立的宏主要要做两个步骤的工作,一是将工作表“sheet2”中的内容逐行调入工作表“sheet1”的打印面板中;二是通过打印机将设定内容打印出来。
宏的工作方式是调入一条内容打印一个信封,循环工作,直至将“sheet2”中的内容打印完毕。
根据上述分析,从“工具”菜单中选择“宏”命令,进入Visual Basic编辑器,编写一个名为“打印”的宏(此宏在实际工作中经过验证,运行正常),其代码如下:Sub 打印()Dim no1 As IntegerSheets("Sheet1").Select '进入打印页面no1 = 1no2 = InputBox("请输入打印内容行数:", "对话框", 1)If no2 = "" Then '如果在对话框中选择了取消按钮,则终止宏!Exit SubEnd IfDo While no1 <= no2Range("a1:f1").Value =Sheets("sheet2").Range("a" + Trim(Str(no1 + 1)) _+ ":" + "f" + Trim(Str(no1 + 1))).Value '更新邮政编码Range("a3").Value = Sheets("sheet2").Range _("g" + Trim(Str(no1 + 1))).Value '更新收件人地址Range("a4").Value = Sheets("sheet2").Range _("h" + Trim(Str(no1 + 1))).Value '更新收件人名称Range("h5").Value = Sheets("sheet2").Range _("i" + Trim(Str(no1 + 1))).Value '更新寄件人名称Range("h6").Value = Sheets("sheet2").Range _("j" + Trim(Str(no1 + 1))).Value '更新寄件人地址Range("h7").Value = Sheets("sheet2").Range _("k" + Trim(Str(no1 + 1))).Value '更新寄件人邮编ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _Collate:=True '打印输出no1 = no1 + 1MsgBox "请放入新的信封后按任意键继续!", 48, "暂停提示"LoopEnd Sub注意事项:⒈在宏中引入了两个变量“no1”和“no2”,其中“no1”是一个计数器(no1始终小于等于no2),“no2”是通过对话框接收的一个数值,用户根据需要打印的信封个数(即工作表“sheet2”中打印内容的行数)输入这个数值,宏通过这个数值确定循环次数。
Excel之VBA常用功能应用篇:用VBA在EXCEL里实现标签的批量打印

Excel之VBA常用功能应用篇:用VBA在EXCEL里实现标签的批量打印相信很多小伙伴曾经也跟我一样遇到类似的问题:如何让一些数据能够自动填充到指定栏并自动打印出来,类似的实现方式比如邮件合并啊,虚拟打印啊,有好几种,今天我给大家介绍如何用vba来实现。
事情的起因是需要打一批产品标签,大家知道标签格式都是固定的,但是每一件毛重净重会有微小的变化,如果靠人工来改一个打一张,实在效率低下,那我的目标就是做一个简单vba来循环,填充数据-》打印-》填充下一列数据-》打印。
那怎么来实现呢?下面我教大家一步步来。
A。
首先,我们要在excel里开启vba功能,这个默认是关闭的,因为vba本身是个程序,以前曾经很流行vba病毒。
下面的步骤是我百度复制来的,如果看不懂的盆友可以直接百度经验。
1,打开Excel软件,点击左上角的文件菜单2,选择左下角的选项菜单3,选择自动以功能区的开发工具4,点击顶部的开发工具菜单5,点击Visual Basic按钮6,这样就打开了VBA的编辑区域B。
好了,vba我们先放一放,我们先把标签页和数据页建立起来。
图3然后按自己需要的格式编辑好,我自己的弄完以后大概是这个样子,那个红色格子都是醒目作用,打印的时候是不需要的哈图4所有我标红色的格子,都是需要自动更新数据的地方,下面重要部分来了大家注意看!我们需要用一个函数来实现这个功能,否则第一步自动更新数据我们就做不下去了,对不对。
记住这个函数,offset,这个函数根据引用的数据来做参照计算,比如其中有个L6-2,这个什么意思呢,引用L2栏内的数据来做计算图5比如图4中,L6栏的序号是124,这个意思就是我需要引用数据页中第124行的数据来填充到这个标签内,而在=OFFSET(数据页!$A$2,L6-2,5)这个函数内,数据页!$A$2表示引用数据页这个sheet中的数据,L6-2则表示引用哪一行,最后一个5表示这一行中的第几个数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何用Excel VBA批量打印文件
有时候一个文件夹内有很多Excel文件,几十个,上百个,如果一个个的打开,然后再打印,显然重复劳动,效率低下。
能不能用Excel VBA批量打印同一文件夹内的所有文件?
答案当然是肯定的。
假设我们的桌面上有个名叫“材料”的文件夹,内有上百个EXCEL文件需要打印
打开EXCEL文件→Visual Basic编辑器(Alt+F11)→插入→模块
以下是VBA代码
********************************************************************* **
Sub test()
Set rrr = CreateObject("Scripting.FileSystemObject")
Set r = rrr.GetFolder("C:\Documents and Settings\Administrator\桌面\材料")
For Each i In r.Files
Workbooks.Open Filename:=("C:\Documents and Settings\Administrator\桌面\材料\" + + "")
ActiveSheet.PageSetup.PrintArea = ""
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ActiveWindow.Close saveChanges:=False
Next
End Sub
********************************************************************* **************
注释:ActiveSheet.PageSetup.PrintArea = "" 的目的是“取消打印区域”
因为有时候这些excel文件并不是我们自己写得,可能已经被别人设定好了打印区域,并保存在文件中,这是我们所看不到的。
(好比方所,其中某个文件的主人由于需要,设定从Excel表的5行到第10行为打印区域,但是我们并看不到。
当我们点击“文件”-->打印,把材料打印出来时,才发现打印的并不是整张表格,而是别人设定的打印区域,这显然不符合我们的要求,所以我们要取消打印区域)。
附:如果先是存在多级目录,大文件夹套很多小文件夹,小文件夹里装的才是文件,怎么办?
解:以大文件为根目录,把此根目录下的所有文件拷贝到同一文件夹内再进行操作。
可以用Windows带的“搜索”功能找到大文件夹内的所有文件,再复制。