Macro de impresión

Se puede hacer una macro de impresión de una base de datos, ¿qué me permita elegir los registros o grupo de registros a imprimir y me informe el número de registros impresos?.

1 respuesta

Respuesta
1
Puedes probar esta macro que se activaría en la hoja activa:
-----------------------------
Sub Impresión()
Dim Inicial As Integer
Dim Final As Integer
Inicial = InputBox("Introduzca el número de registro inicial", "Registro Inicial")
Final = InputBox("Introduzca el número de registro final", "Registro Final")
ActiveSheet.PageSetup.PrintArea = "A" & Inicial & ":" & "D" & Final
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
MsgBox "Se han imprimido " & (Final - Inicial) & " registros", 0, "Número de registros"
End Sub
----------------------------
Sobre esta base se pueden modificar las opciones de impresión, sólo he puesto lo imprescindible.
Bueno, si necesitas alguna aclaración no dudes en continuar la pregunta.
Bien.Ante todo gracias por contestar.La macro funciona, pero cuando mando a imprimir por ejemplo del registro inicial=2 al registro final=3, imprime los 2 registros, pero la información final me indica que se imprimió 1 registro.Otra cosa, cómo hago para imprimir cada registro en un hoja de papel diferente.Se puede elegir entre impresión borrador y normal, ya que sólo imprime en normal.Muchas gracias
Creo que metí la pata en el mensaje de aviso. Tienes que cambiarlo por:
MsgBox "Se han imprimido " & (Final - Inicial+1) & " registros", 0, "Número de registros"
Para las opciones de impresión, lo mejor es que comiences a grabar una macro y le des a imprimir seleccionando las opciones que necesites (papel, nº de copias, etc.). Luego miras el código que has grabado y lo copias en lugar de la fila:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Si no lo ves claro copia aquí lo que te salga y le echo un vistazo.
De todas formas, por las pruebas que he hecho yo, la impresión borrador no depende de una instrucción del Excel sino de la configuración de la impresora. Seguramente si imprimes en modo borrador y luego usas la macro, esta utilizará la impresora activa con su configuración.
Para imprimir un registro por hoja puedes definir el zoom para que se reduzcan el número de celdas por página, pero por si lo prefieres he modificado la macro para que imprima registro a registro.
----------------------------
Sub Impresión2()
Dim Inicial As Integer
Dim Final As Integer
Dim Contador As Integer
Inicial = InputBox("Introduzca el número de registro inicial", "Registro Inicial")
Final = InputBox("Introduzca el número de registro final", "Registro Final")
If Final < Inicial Then
MsgBox "El registro final es menor que el inicial ", 0, "Error"
Exit Sub
Else
For Contador = 0 To (Final - Inicial)
ActiveSheet.PageSetup.PrintArea = "A" & Inicial + Contador & ":" & "D" & Inicial + Contador
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next Contador
MsgBox "Se han imprimido " & (Final - Inicial + 1) & " registros", 0, "Número de registros"
End If
End Sub
--------------------------
En fin, ya me contarás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas