我怎样才能一次打印出 20 个单独的 Word 文档?

我怎样才能一次打印出 20 个单独的 Word 文档?

我需要打印 20 份单独的 Word 文档。我不想打开每份文档并单击打印

我可以以某种方式一次性打印所有内容吗?

答案1

在 Windows 中,您可以选择多个文件,右键单击并选择打印,它将打印您选择的所有内容

在此处输入图片描述

然而,经我测试,它每次只能处理最多 15 个文档(我猜是为了防止因打印错误的文件夹而造成意外灾难。)

在此处输入图片描述

答案2

我认为这不仅仅是一次性的需求(否则您可以使用 Windows UI 选择多个文档,右键单击并选择打印)。

宏可以接受吗?以下是从宏打开和打印 Word 文档所需的基本代码:

Sub PrintDocMacro()

Dim objWord As Object
Set objWord = CreateObject("Word.application") 'Start app
objWord.Documents.Open FileName:="c:\Temp\test.docx" 'Open doc
objWord.Visible = True
objWord.Application.PrintOut 'Print doc
objWord.ActiveDocument.Close savechanges:=True 'close & save doc
objWord.Application.Quit 'Close app
Set objWord = Nothing

End Sub

我们需要编写一个循环来打印所有想要的文档。如果要打印的文档是给定文件夹中的所有文档,我们也可以这样做。微软有示例代码用于读取目录。

如果您出于某种原因想要按计划打印这些内容,我想您可以让包含宏的文件使用 AutoOpen 运行它,甚至在完成后关闭,然后只需安排通过任务计划程序打开启用宏的文件即可。

答案3

我意识到这是一个老问题,但我没有看到我在这里使用的答案。

您可以使用 Windows 资源管理器外壳中的右键单击选项来打印多个文档。通常,最多可打印 15 个文档;但是,可以在注册表中更改该限制。以下是需要修改为所需限制的值:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
Name : MultipleInvokePromptMinimum
Type : DWORD
Default : 15 (decimal)

希望这可以让某些人免去使用宏的麻烦。

答案4

这是一个宏,可让您指定一个文件夹,它将打印该文件夹内的所有 word 文件(包括子文件夹)。

Public optionCancel

Sub Print_word_files()
Dim path
Dim reminder As Integer
Dim oExtension As String
Dim Fso, oFolder, oSubfolder, oFile, queue As Collection

On Error Resume Next

path = " " //######################put files path here (ex: c:\users\myFiles) ################

If optionCancel = "yes" Then
optionCancel = "No"
Exit Sub
End If

reminder = MsgBox("Are you sure you want to print these files?", 4, "WARNING !!")

If reminder = 6 Then    'If Yes is clicked

Set Fso = CreateObject("Scripting.FileSystemObject")
Set queue = New Collection
queue.Add Fso.GetFolder(path) 'The path

Do While queue.Count > 0
Set oFolder = queue(1)
queue.Remove 1 'dequeue
'...insert any <<folder>> processing code here...
For Each oSubfolder In oFolder.subfolders
queue.Add oSubfolder 'enqueue
Next oSubfolder
For Each oFile In oFolder.Files

oExtension = Right(oFile, Len(oFile) - InStrRev(oFile, ".", -1)) 'gets the file extension

If oExtension = "docx" Or oExtension = "DOCX" Or oExtension = "doc" Or oExtension = "DOC" Or oExtension = "docm" Or oExtension = "DOCM" Or oExtension = "rtf" Or oExtension = "RTF" Then

Documents.Open FileName:=(oFile)

'-------------------The required starts here

ActiveDocument.PrintOut      'Prints document

ActiveDocument.Saved = True  'to prevent asking to save

ActiveDocument.Close         'Closes document

'-------------------The required ends here

End If

Next oFile

Loop

Else

MsgBox ("Operation cancelled!!")

End If

End Sub

相关内容