
Necesito imprimir 20 documentos de Word individuales. No quiero abrir cada uno y hacer clicImprimir.
¿Puedo imprimir de alguna manera todo a la vez?
Respuesta1
En Windows, puede seleccionar varios archivos, haga clic derecho y elija imprimir y se imprimirá todo lo que seleccionó.
sin embargo, según mis pruebas, solo funciona con hasta 15 documentos a la vez (supongo que es para evitar una catástrofe accidental al imprimir la carpeta incorrecta).
Respuesta2
Estoy pensando que esto es más que una necesidad única (de lo contrario, puede usar la interfaz de usuario de Windows para seleccionar varios documentos, hacer clic derecho y elegir imprimir).
¿Sería aceptable una macro? Este es el código básico necesario para abrir e imprimir un documento de Word desde una 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
Necesitaríamos escribir un bucle para imprimir todos los documentos que desee. Si los documentos que desea imprimir son todos los documentos de una carpeta determinada, también podríamos hacerlo. Microsoft tienecódigo de ejemplopara leer un directorio.
Si desea imprimirlos según una programación por algún motivo, supongo que podría hacer que el archivo que contiene la macro se ejecute con AutoOpen e incluso cerrarlo cuando haya terminado y simplemente programar ese archivo habilitado para macros para que se abra a través del Programador de tareas.
Respuesta3
Me doy cuenta de que esta es una pregunta antigua, pero no vi la respuesta que uso aquí.
Puede utilizar la opción de clic derecho desde el shell del Explorador de Windows para imprimir varios documentos. Normalmente esto tiene un límite de 15 documentos; sin embargo,ese límite se puede cambiar en el registro. Aquí está el valor para modificar según el límite necesario:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
Name : MultipleInvokePromptMinimum
Type : DWORD
Default : 15 (decimal)
Con suerte, eso le ahorrará a alguien la molestia de usar una macro.
Respuesta4
Esta es una macro que le permite especificar una carpeta e imprimirá todos los archivos de Word dentro de esta carpeta, incluidas las subcarpetas.
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