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?.
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.