Sigo teniendo los primeros problemas con un documento del programa Microsoft Excel

Hola Fernando, he entrado en todoexpertos y me he encontrado con tu respuesta a una pregunta que me habías contestado. Veo que ha habido un fallo. Lo que pasa es que se me ha perdido la respuesta que me diste a la pregunta y confiado en que en todoexpertos quedaba la respuesta guardada no había tenido tiempo de ponerla en práctica todavía, con lo que te agradecería enormemente que me la volvieras a enviar. El enunciado de la pregunta era el siguiente:
"tengo una hoja en excel que en una celda tiene un número
de documento. Cada vez que imprimo esta hoja tengo que
incrementar el número en 1 y después imprimir. El problema
es cuando tengo que imprimir 100 o 200 hojas, con lo cual
tengo que repetir la operación de antes 100 o 200 veces.
¿Hay alguna forma de realizar esta tarea automáticamente?
Es decir que incremente una unidad el número y luego
imprima la hoja indicándole solo el número de hojas que
quiero imprimir. "
Saludos!
Fran.

1 Respuesta

Respuesta
1
Habitualmente, las respuestas pemanecen en el sitio. Desde que participo en él, esta es la primera vez que pierden parte del archivo.
La respuesta que te había dado era algo así como esto:
Básicamente la solución pasará por colocarle un contador de hojas impresas en una celda asociada a imprimir.
Es decir que antes de efectuar una impresión el numero pasará al siguiente. De todos modos, siempre podrás cambiarlo a mano.
A este fin es necesario que actives el editor de Visual Basic (Alt+F11)
A la izquierda de la pantalla, busca la carpeta ThisWorkbook (o "EsteLibro" en otras versiones). Da doble click sobre él.
En el panel de la derecha pegas este código:
Private Sub Private Sub Workbook_BeforePrint(Cancel As Boolean)
Sheets("Hoja1").Range("H2").Value = Sheets("Hoja1").Range("H2").Value + 1
End Sub
(Esto asumiendo que tu celda con el contador fuese H2 de la hoja "Hoja1". Si no, cambialos). Obviamente, esta celda deberá estar ubicada dentro del área de impresión para que aparezca en el papel.
Cierra el editor de Visual Basic y graba el archivo.
A partir de ahora, antes de cada impresión el valor de tal celda se incrementará en 1.
Ahora bien, esto funciona OK para el caso de que imprimas una hoja por vez o si eliges varias copias de la misma hoja y quieres que todas salgan impresas con el mismo número...
En este punto es importante entender el proceso por lotes de impresión. Si seleccionas una hoja y la envías a imprimir, el macro anterior cambiará el número en la celda de la hoja. Pero todas las *copias* que hagas de esa hoja se imprimirán con el mismo valor en la hoja
Pero puede ser que desees que *cada* impresión tenga un número distinto, aún cuando se trate de la misma hoja...
Si este fuera tu caso, necesitarías otra macro que tome el control de la impresión. Dentro de su proceso preverá que le indiques la cantidad de copias a imprimir.
Así, también con el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código:
Sub NumPrn()
cops = InputBox("Ingresa cantidad de copias", "COPIAS NUMERADAS", 1)
If cops <> "" Then
For C = 1 To cops
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Range("H2").Value = Range("H2").Value + 1
Next C
'deja el valor de la última copia impresa
Range("H2").Value = Range("H2").Value - 1
End If
End Sub
Cierra el Editor de Visual Basic y graba el archivo.
Podrías agregar un botón en la hoja que tenga asociado esta macro para que se use esta rutina al imprimir.
Tal vez alguna de estas dos alternativas, resuelva tu pregunta. Esto debería resolver tu pregunta. Si así fuera, agradeceré un comentario y que la finalices.
Si no, pregúntame de nuevo.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas