
Preciso imprimir 20 documentos individuais do Word. Não quero abrir cada um e clicarImprimir.
Posso de alguma forma imprimir tudo de uma vez?
Responder1
No Windows você pode selecionar vários arquivos, clique com o botão direito e escolha imprimir e imprimirá tudo o que você selecionou
no entanto, com meus testes, ele só funciona com até 15 documentos por vez (acho que é para evitar uma catástrofe acidental imprimindo a pasta errada).
Responder2
Estou pensando que isso é mais do que uma necessidade única (caso contrário, você pode usar a interface do Windows para selecionar vários documentos, clicar com o botão direito e escolher imprimir).
Uma macro seria aceitável? Aqui está o código básico necessário para abrir e imprimir um documento do Word a partir de uma macro:
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
Precisaríamos escrever um loop para imprimir todos os documentos que você deseja. Se os documentos que você deseja imprimir forem todos os documentos de uma determinada pasta, poderíamos fazer isso também. A Microsoft temcódigo de exemplopara ler um diretório.
Se você quiser imprimi-los em uma programação por algum motivo, suponho que você possa fazer o arquivo que contém a macro executá-lo com AutoOpen e até mesmo fechar quando terminar e apenas agendar esse arquivo habilitado para macro para ser aberto através do Agendador de Tarefas.
Responder3
Sei que esta é uma pergunta antiga, mas não vi a resposta que uso aqui.
Você pode usar a opção de clicar com o botão direito no shell do Windows Explorer para imprimir vários documentos. Normalmente tem um limite de 15 documentos; no entanto,esse limite pode ser alterado no registro. Aqui está o valor a ser modificado para o limite necessário:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
Name : MultipleInvokePromptMinimum
Type : DWORD
Default : 15 (decimal)
Esperançosamente, isso poupa alguém do trabalho de usar uma macro.
Responder4
Esta é uma macro que permite especificar uma pasta e imprimirá todos os arquivos de texto dentro desta pasta, incluindo as subpastas.
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