ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8118|回复: 7

[求助] VBA编程批量打印Word文件,并指定从几页打到几页

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-22 19:34 | 显示全部楼层 |阅读模式
求一个VBA代码能批量打印Word文件,并指定从几页打到几页。就是说每个word有3页,但我只打它的第2页,注意是批量打,不是单个文件打印。

TA的精华主题

TA的得分主题

发表于 2017-5-22 19:53 | 显示全部楼层
Application.PrintOut 方法
打印指定文档的全部或部分内容。
语法

表达式.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)

表达式   必选。一个代表 Application 对象的变量。

参数

名称 必选/可选 数据类型 说明
Background 可选 Variant 如果将该属性设置为 True,则 Microsoft Word 在打印文档时继续运行宏。
Append 可选 Variant 如果将该属性设置为 True,则将指定文档附加到 OutputFileName 参数所指定的文件名。如果将该属性设置为 False,则覆盖 OutputFileName 参数所指定文件的内容。
Range 可选 Variant 页码范围。可以是任意 WdPrintOutRange 常量。
OutputFileName 可选 Variant 如果 PrintToFile 为 True,则该参数指定输出文件的路径和文件名。
From 可选 Variant 如果将 Range 设置为 wdPrintFromTo,则该参数指定起始页码。
To 可选 Variant 如果将 Range 设置为 wdPrintFromTo,则该参数指定结束页码。
Item 可选 Variant 要打印的项目。可以是任意 WdPrintOutItem 常量。
Copies 可选 Variant 要打印的份数。
Pages 可选 Variant 要打印的页码和页码范围,中间用逗号分开。例如,“2, 6-10”表示打印第 2 页以及第 6 至第 10 页。
PageType 可选 Variant 要打印的页面类型。可以是任意 WdPrintOutPages 常量。
PrintToFile 可选 Variant 如果该属性值为 True,则将打印指令发送到文件。请确保使用 OutputFileName 指定文件名。
Collate 可选 Variant 在打印文档的多份副本时,如果该属性值为 True,则完成打印所有页面后再打印下一份副本。
FileName 可选 Variant 要打印的文档的路径和文件名。如果省略该参数,Word 将打印活动文档(仅应用于 Application 对象)。
ActivePrinterMacGX 可选 Variant 该参数仅适用于 Microsoft Office Macintosh Edition。有关该参数的其他信息,请参阅 Microsoft Office Macintosh Edition 附带的语言参考帮助。
ManualDuplexPrint 可选 Variant 如果该属性值为 True,则在无双面打印组件的打印机上打印双面文档。如果该属性值为 True,则忽略 PrintBackground 和 PrintReverse 属性。使用 PrintOddPagesInAscendingOrder 和 PrintEvenPagesInAscendingOrder 属性可在手动双面打印时控制输出。由于选择或安装的语言支持(如美国英语)不同,该参数可能不可用。
PrintZoomColumn 可选 Variant 表示 Word 在一页纸上水平放置的页数。可以是 1、2、3 或 4 页。与 PrintZoomRow 参数一同使用可在单张纸上打印多页文档。
PrintZoomRow 可选 Variant 表示 Word 在一页纸上垂直放置的页数。可以是 1、2 或 4 页。与 PrintZoomColumn 参数一同使用可在单张纸上打印多页文档。
PrintZoomPaperWidth 可选 Variant Word 将打印页面缩放到的宽度,以缇为单位(20 缇 = 1 磅;72 磅 = 1 英寸)。
PrintZoomPaperHeight 可选 Variant Word 将打印页面缩放到的高度,以缇为单位(20 缇 = 1 磅;72 磅 = 1 英寸)。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-5-22 19:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Document.PrintOut 方法
打印指定文档的全部或部分内容。
语法

表达式.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)

表达式   必选。一个代表 Document 对象的变量。

参数

名称 必选/可选 数据类型 说明
Background 可选 Variant 如果将该属性设置为 True,则 Microsoft Word 在打印文档时继续运行宏。
Append 可选 Variant 如果将该属性设置为 True,则将指定文档附加到 OutputFileName 参数所指定的文件名。如果将该属性设置为 False,则覆盖 OutputFileName 参数所指定文件的内容。
Range 可选 Variant 页码范围。可以是任意 WdPrintOutRange 常量。
OutputFileName 可选 Variant 如果 PrintToFile 为 True,则该参数指定输出文件的路径和文件名。
From 可选 Variant 如果将 Range 设置为 wdPrintFromTo,则该参数指定起始页码。
To 可选 Variant 如果将 Range 设置为 wdPrintFromTo,则该参数指定结束页码。
Item 可选 Variant 要打印的项目。可以是任意 WdPrintOutItem 常量。
Copies 可选 Variant 要打印的份数。
Pages 可选 Variant 要打印的页码和页码范围,中间用逗号分开。例如,“2, 6-10”表示打印第 2 页以及第 6 至第 10 页。
PageType 可选 Variant 要打印的页面类型。可以是任意 WdPrintOutPages 常量。
PrintToFile 可选 Variant 如果该属性值为 True,则将打印指令发送到文件。请确保使用 OutputFileName 指定文件名。
Collate 可选 Variant 在打印文档的多份副本时,如果该属性值为 True,则完成打印所有页面后再打印下一份副本。
FileName 可选 Variant 要打印的文档的路径和文件名。如果省略该参数,Word 将打印活动文档(仅应用于 Application 对象)。
ActivePrinterMacGX 可选 Variant 该参数仅适用于 Microsoft Office Macintosh Edition。有关该参数的其他信息,请参阅 Microsoft Office Macintosh Edition 附带的语言参考帮助。
ManualDuplexPrint 可选 Variant 如果该属性值为 True,则在无双面打印组件的打印机上打印双面文档。如果该属性值为 True,则忽略 PrintBackground 和 PrintReverse 属性。使用 PrintOddPagesInAscendingOrder 和 PrintEvenPagesInAscendingOrder 属性可在手动双面打印时控制输出。由于选择或安装的语言支持(如美国英语)不同,该参数可能不可用。
PrintZoomColumn 可选 Variant 表示 Word 在一页纸上水平放置的页数。可以是 1、2、3 或 4 页。与 PrintZoomRow 参数一同使用可在单张纸上打印多页文档。
PrintZoomRow 可选 Variant 表示 Word 在一页纸上垂直放置的页数。可以是 1、2 或 4 页。与 PrintZoomColumn 参数一同使用可在单张纸上打印多页文档。
PrintZoomPaperWidth 可选 Variant Word 将打印页面缩放到的宽度,以缇为单位(20 缇 = 1 磅;72 磅 = 1 英寸)。
PrintZoomPaperHeight 可选 Variant Word 将打印页面缩放到的高度,以缇为单位(20 缇 = 1 磅;72 磅 = 1 英寸)。

TA的精华主题

TA的得分主题

发表于 2017-5-22 20:05 | 显示全部楼层
Global.ActivePrinter 属性
返回或设置活动打印机名称。可读/写 String 类型。
语法

表达式.ActivePrinter

表达式   一个代表 Global 对象的变量。

说明


使用 ActivePrinter 属性设置打印机会更改默认打印机。有关详细信息,请参阅设置 ActivePrinter 以更改系统默认打印机。

TA的精华主题

TA的得分主题

发表于 2017-5-22 20:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
批量文件打印 循环遍历文档 打印,关闭。。。。。。循环下一个!!!
最后就是  组合VBA代码!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-23 13:26 | 显示全部楼层
duquancai 发表于 2017-5-22 20:07
批量文件打印 循环遍历文档 打印,关闭。。。。。。循环下一个!!!
最后就是  组合VBA代码!!!!

小白表示看了还是不懂

TA的精华主题

TA的得分主题

发表于 2017-5-23 13:40 | 显示全部楼层
Kllies 发表于 2017-5-23 13:26
小白表示看了还是不懂

那就是说 你等待别人写好代码,直接用就行了!对不起,你坐等大神给你写吧!

TA的精华主题

TA的得分主题

发表于 2017-5-26 22:53 | 显示全部楼层
楼主,我过去有一个批量打印的小宏,我改了一下,没测试打印,你自己试试吧,建议用2-3个文件的一个文件夹来打印试试,不一定正确:
  1. Sub 循环遍历文件夹_批量打印()
  2.     On Error Resume Next
  3.     Dim fd As FileDialog, i As Long, doc As Document, p As String, s As Section, j As Long, k As String, x As Long, t As Long, a$, b$
  4.     a = InputBox("请输入起始打印页码!", "批量打印", "3")
  5.     If a = "" Then Exit Sub
  6.     b = InputBox("请输入终止打印页码!", "批量打印", "3")
  7.     If b = "" Then Exit Sub
  8.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  9.     If fd.Show = -1 Then p = fd.SelectedItems(1) Else Exit Sub
  10.     Set fd = Nothing
  11.     If MsgBox("是否打印文件夹 " & p & " ?", vbYesNo + vbExclamation, "循环遍历文件夹_批量打印") = vbNo Then Exit Sub
  12.     k = InputBox("请输入整套打印份数!", "循环遍历文件夹_批量打印", "1")
  13.     If k = "" Then Exit Sub
  14.     For t = 1 To k
  15.         With Application.FileSearch
  16.             .NewSearch
  17.             .LookIn = p
  18.             .SearchSubFolders = True
  19.             .FileName = "*.doc"
  20.             If .Execute > 0 Then
  21.                 For i = 1 To .FoundFiles.Count
  22.                     Set doc = Documents.Open(FileName:=.FoundFiles(i), Visible:=False)
  23.                     For Each s In doc.Sections
  24.                         With s.PageSetup
  25.                             If .Orientation = wdOrientLandscape Then j = 1 Else j = 0
  26.                             If .PaperSize <> wdPaperA4 Then .PaperSize = wdPaperA4: If j = 1 Then .Orientation = wdOrientLandscape
  27.                         End With
  28.                     Next
  29.                     doc.PrintOut Range:=wdPrintFromTo, From:=a, To:=b
  30.                     doc.Close savechanges:=wdDoNotSaveChanges
  31.                 Next i
  32.                 x = .FoundFiles.Count
  33.             Else
  34.                 MsgBox "未发现文件!", vbOKOnly + vbCritical, "循环遍历文件夹_批量打印": End
  35.             End If
  36.         End With
  37.     Next t
  38.     MsgBox "打印完毕!共打印 " & x & " 个文件!整套打印 " & k & " 份!", vbOKOnly + vbExclamation, "循环遍历文件夹_批量打印"
  39. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 23:05 , Processed in 0.036870 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表