Excel Vba Como Acelerar El Método de Impresión en una Macro

Ya realice una macro para imprimir 10 columnas, cada columna tiene 14 celdas

Dependiendo de la letra que tenga la celda es como va a imprimir. Ejemplo: si la celda tiene "I" imprimirá del lado izquierdo de la hoja (viendo de frente), si tiene la letra "F" imprimirá del lado derecho de la hoja, si tiene "E" imprimirá en medio.

Ya logre hacer la macro, funciona bien. El problema que tengo es que cuando mando a imprimir, imprime lento.

utilizo la funcion;  "  Selection.PrintOut Copies:=1, Collate:=True "

Esta función se ejecuta por cada columna. Son 10 columnas.. Me gustaría cambiar la macro y que se ejecute una vez pero que ya imprima las 10 columnas una traz otra...

1 respuesta

Respuesta
1

H o l a:

Puedes poner la macro completa para revisarla.

El tiempo de impresión no se puede reducir, eso es de windows y el tiempo en que la impresora tarda en responder.

Claro si quiere le puedo mandar el archivo de Excel..

 A que correo se lo mando??

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “(xxxxxx)” y el título de esta pregunta.

Hola Dante

Te Acabo de mandar el Correo con los datos que me pediste

Espero no sea difícil mi problema..

Saludos!.

Te anexo la macro actualizada

Sub PRUEBA()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim NUM_QUIN As Integer
    '
    FHOJA = "FORMATO IMPRESION"
    Sheets("HOJA1").Select
    [A1].Select
    NUM_QUIN = ActiveCell.Value
    PROGOL1 = ActiveSheet.Name
    'borra hojas
    For i = Sheets.Count To 3 Step -1
        Sheets(i).Delete
    Next
    '
    Do While Not IsEmpty(ActiveCell.Value)
        BAN = 0
        NUM_QUINIELA = ActiveCell.Value
        For i = 1 To 14
            NUM_PARTIDO = ActiveCell.Offset(i, 0).Value
            Sheets(FHOJA).Activate
            Set FOUNDCELL = ActiveSheet.Columns("B").Find(i, lookat:=xlWhole)
            If FOUNDCELL Is Nothing Then
                MsgBox ("Lo Siento,  No Se Encontro NUMERO  " & i)
                End
            End If
            FOUNDCELL.Select
            '**********************************************************
            If BAN = 0 Then
                Columns("A").ClearContents
                Columns("C").ClearContents
                Columns("E").ClearContents
                ActiveCell.Offset(-7, 3).Value = NUM_QUINIELA
            End If
            '**********************************************************
            BAN = 1
            If NUM_PARTIDO = "L" Then
                ActiveCell.Offset(0, -1).Value = "'=="
            ElseIf NUM_PARTIDO = "E" Then
                ActiveCell.Offset(0, 1).Value = "'=="
            ElseIf NUM_PARTIDO = "V" Then
                ActiveCell.Offset(0, 3).Value = "'=="
            End If
            Sheets(PROGOL1).Activate
        Next i
        Sheets(FHOJA).Copy after:=Sheets(Sheets.Count)
        'Sheets(FHOJA).Activate
        'Range("A1:E23").Select
        'Selection.PrintOut Copies:=1, Collate:=True
        Sheets(PROGOL1).Activate
        NUM_QUINIELA = ActiveCell.Offset(0, 1).Select
    Loop
    '
    'imprime hojas
    For i = 3 To Sheets.Count
        Sheets(i).Select Replace:=False
    Next
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    '
    'borra hojas
    For i = Sheets.Count To 3 Step -1
        Sheets(i).Delete
    Next
    Application.ScreenUpdating = True
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s

Hola Dante

Me Gusto tu Respuesta, Gracias Por tu Ayuda. Solo tengo un Detalle, cuando se manda a imprimir, imprime de la ultima al primero. ¿Se podrá cambiar eso? Que imprima del primero al ultimo,¿así como va la numeración?

Y otra cosa, por que imprime la hoja llamada "HOJA1", ¿sera por que al ultimo esa queda seleccionada? ¿Y creo que se mandan a imprimir todas las seleccionadas?

Saludos!.

H o l a:

Pusiste la pregunta como anónima, puedes regresarla a pública.

Hola Dante

lo siento.. No pense que eso importara mucho

Listo!..

Te anexo la macro actualizada

Sub PRUEBA()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim NUM_QUIN As Integer
    '
    FHOJA = "FORMATO IMPRESION"
    Sheets("HOJA1").Select
    [A1].Select
    NUM_QUIN = ActiveCell.Value
    PROGOL1 = ActiveSheet.Name
    'borra hojas
    For i = Sheets.Count To 3 Step -1
        Sheets(i).Delete
    Next
    '
    Do While Not IsEmpty(ActiveCell.Value)
        BAN = 0
        NUM_QUINIELA = ActiveCell.Value
        For i = 1 To 14
            NUM_PARTIDO = ActiveCell.Offset(i, 0).Value
            Sheets(FHOJA).Activate
            Set FOUNDCELL = ActiveSheet.Columns("B").Find(i, lookat:=xlWhole)
            If FOUNDCELL Is Nothing Then
                MsgBox ("Lo Siento,  No Se Encontro NUMERO  " & i)
                End
            End If
            FOUNDCELL.Select
            '**********************************************************
            If BAN = 0 Then
                Columns("A").ClearContents
                Columns("C").ClearContents
                Columns("E").ClearContents
                ActiveCell.Offset(-7, 3).Value = NUM_QUINIELA
            End If
            '**********************************************************
            BAN = 1
            If NUM_PARTIDO = "L" Then
                ActiveCell.Offset(0, -1).Value = "'=="
            ElseIf NUM_PARTIDO = "E" Then
                ActiveCell.Offset(0, 1).Value = "'=="
            ElseIf NUM_PARTIDO = "V" Then
                ActiveCell.Offset(0, 3).Value = "'=="
            End If
            Sheets(PROGOL1).Activate
        Next i
        Sheets(FHOJA).Copy after:=Sheets(Sheets.Count)
        'Sheets(FHOJA).Activate
        'Range("A1:E23").Select
        'Selection.PrintOut Copies:=1, Collate:=True
        Sheets(PROGOL1).Activate
        NUM_QUINIELA = ActiveCell.Offset(0, 1).Select
    Loop
    '
    'imprime hojas
    If Sheets.Count > 2 Then
        Sheets(3).Select
        For i = Sheets.Count To 4 Step -1
            Sheets(i).Select Replace:=False
        Next
        ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
        'borra hojas
        For i = Sheets.Count To 3 Step -1
            Sheets(i).Delete
        Next
    End If
    '
    Application.ScreenUpdating = True
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s

E stimado, no dejes preguntas sin valorar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas