Saltar al contenido

Recommended Posts

publicado

Hola buenas tardes:

Tengo un archivo con mi macro de imprimir archivos de una lista ya sea Pdf, doc etx. 

en una hoja de Excel tengo en la columna B la ruta y nombre de los archivos, y en columna C solo tengo el nombre en columna (para saber que archivo imprimo) en columna D coloco alguna letra y ese archivo no se imprimirá.

La macro funciona bien.

Solo que la impresión no se hace de manera consecutiva de acuerdo a los nombrados en las celdas. a veces tengo más de 30 archivos y se me revuelven las impresiones. 

Cuando imprime sale el ultimo archivo de la lista.

Adicional, si es posible que no tenga que abrir los archivos. ya que previo yo he revisado todos los archivos de mi lista.

Muchas gracias 

Imprimir en orden de lista.xlsm

  • 8 months later...
publicado

¡Vaya! Un poco tarde para comentar, seguro ya está resuelto.

Una idea sería usar algo parecido a ShellWait pero como en VBA no tiene un comando así, se puede imitar con una función a modo que espere a que el proceso termine.

Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Sub ImprimirMC()

    Dim sfile As String
    Dim uf As Long
    Dim j As Long
    
    Set a = Sheets(ActiveSheet.Name)
    uf = a.Range("B" & Rows.Count).End(xlUp).Row
    
    For j = 3 To uf
        If a.Range("D" & j).Value = "" Then
            sfile = a.Cells(j, "B").Value
            
            
            ShellExecute 0&, "print", sfile, vbNullString, vbNullString, 0
            
            ' Agregar un retraso para permitir que la impresora procese el archivo
            Sleep 2000 ' 2000 ms = 2 segundos (ajustable según tu impresora)
        End If
    Next j
    
End Sub

El Sleep 2000: Espera de 2 segundos entre cada impresión. lo puedes ajustar a la velocidad de tu impresora según el tamaño de los archivos.

El ShellExecute mantendrá la instrucción original para enviar el archivo directamente a imprimir.

Ahora, para no abrir los archivos se usa el ShellExecute en modo "print" eso debería evitar la apertura del libro, pero OJO depende de la configuración del programa predeterminado en tu sistema. Si los sigue haciendo, debes revisar las asociaciones predeterminadas de Windows para cada tipo de archivo.

Saludines

Invitado
Este tema está cerrado a más respuestas.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.