用VBA实现Word文件的批量打印
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sub 批量对Word操作()
' A.公共部分的代码
Application.ScreenUpdating = False '冻结屏幕,以防屏幕抖动,这句好像没作用,窗口仍然会颤抖
Dim mydialog As FileDialog, GetStr(1 To 1000) As String '1000是工作时的文档上限数,可因需修改,不知没有限制的命令怎样写?
On Error Resume Next
Set mydialog = Application.FileDialog(msoFileDialogFilePicker)
With mydialog
.Title = "请选择要处理的文档(可多选)"
.Filters.Clear '过滤掉筛选器中的所有文件类型,然后现在下面用filters.add加上word类型
.Filters.Add "所有WORD文件", "*.doc", 1
.AllowMultiSelect = True 'true表示允许多选,如果需要单选,请用false
i = 1
If .Show = -1 Then
For Each stiSelectedItem In .SelectedItems
GetStr(i) = stiSelectedItem
i = i + 1
Next
i = i - 1
End If
Application.ScreenUpdating = False
For j = 1 To i Step 1
Set Doc = Documents.Open(FileName:=GetStr(j), Visible:=True)
Windows(GetStr(j)).Activate
' B可以替换的宏
' 以下是处理格式所录制的宏,可根据所需录制
Application.Run MacroName:="单个文件默认打印" '运行名为"单个文件默认打印"的宏,宏命令见后面
' 以上可以换成是你自己录制的宏
' C公共部分的代码
'Application.Run MacroName:="Macro1"'运行名为"Macro1"的宏,根据需要录制,自行命名
ActiveDocument.Save '保存
ActiveWindow.Close '退出
Next
Application.ScreenUpdating = True
End With
MsgBox "操作完成,请查看!!", 64, "提示"
'Application.Quit '关闭并退出Word
End Sub
Sub 单个文件默认打印()
'
' 下面是按默认的打印录制的宏,你可以自己录制。
'
'
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
End Sub
Sub 批量对Word操作()
' A.公共部分的代码
Application.ScreenUpdating = False '冻结屏幕,以防屏幕抖动,这句好像没作用,窗口仍然会颤抖
Dim mydialog As FileDialog, GetStr(1 To 1000) As String '1000是工作时的文档上限数,可因需修改,不知没有限制的命令怎样写?
On Error Resume Next
Set mydialog = Application.FileDialog(msoFileDialogFilePicker)
With mydialog
.Title = "请选择要处理的文档(可多选)"
.Filters.Clear '过滤掉筛选器中的所有文件类型,然后现在下面用filters.add加上word类型
.Filters.Add "所有WORD文件", "*.doc", 1
.AllowMultiSelect = True 'true表示允许多选,如果需要单选,请用false
i = 1
If .Show = -1 Then
For Each stiSelectedItem In .SelectedItems
GetStr(i) = stiSelectedItem
i = i + 1
Next
i = i - 1
End If
Application.ScreenUpdating = False
For j = 1 To i Step 1
Set Doc = Documents.Open(FileName:=GetStr(j), Visible:=True)
Windows(GetStr(j)).Activate
' B可以替换的宏
' 以下是处理格式所录制的宏,可根据所需录制
Application.Run MacroName:="单个文件默认打印" '运行名为"单个文件默认打印"的宏,宏命令见后面
' 以上可以换成是你自己录制的宏,
'其中Application.Run MacroName:="单个文件默认打印"'运行名为"单个文件默认打印"的宏,根据需要录制,自行命名
' C公共部分的代码
ActiveDocument.Save '保存
ActiveWindow.Close '退出
Next
Application.ScreenUpdating = True
End With
MsgBox "操作完成,请查看!!", 64, "提示"
'Application.Quit '关闭并退出Word
End Sub
Sub 单个文件默认打印()
'
' 下面是按默认的打印录制的宏,你可以自己录制。
'
'
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
End Sub