Cuadro combinado e impresión de datos

05/11/2006 - 06:38 por ElAlumno | Informe spam
Hola todos:

Vengo en busca de su ayuda en el siguiente tema:

Tengo una pequeña base de datos en la Hoja1 de Excel (unos 300
registros + ó -) y en las diferentes celdas de la Hoja2 he diseñado
un recibo de pago, el cual funciona con base en una lista desplegable
de un "ComboBox" que permite seleccionar el nombre de la persona y con
ese nombre se cargan todos los demás datos del recibo, que luego se
debe imprimir (uno a uno) con el uso de un botón.

Pues todo era sencillo hasta que las personas pasaron de 100, cifra que
ha hecho algo complejo (demorado) el proceso de impresión.

La inquietud que me asiste es:
a) Que codigo (VBA) puedo utilizar, que con un solo clic en un botón,
imprima la totalidad de los recibos correspondientes a todos los 300
registros?
-Adicionalmente:
¿Con que código cargo el "nombre de la persona" en la propiedad
"Text" de la categoría "Dato" de la propiedad del "ComboBox", que es
la referencia para que los demas datos llenen el recibo?

Espero haber expresado con claridad mis inquietudes y gracias por su
ayuda.

Preguntas similare

Leer las respuestas

#6 ElAlumno
06/11/2006 - 05:51 | Informe spam
Héctor Miguel:

Me permites que te envié copia del modelo a tu correo?

Gracias,

Saludos.
Respuesta Responder a este mensaje
#7 Héctor Miguel
06/11/2006 - 05:56 | Informe spam
hola, Manuel !

... copia del modelo a tu correo?



ya sabes que hacer... solo quita de la direccion el 'NO...SPAM...PLS' ;)

saludos,
hector.
Respuesta Responder a este mensaje
#8 Héctor Miguel
06/11/2006 - 06:51 | Informe spam
hola, Manuel ! [para no dejar al grupo -que no recibio el archivo- 'fuera de la jugada'] :D

1) existe una hoja ['base de datos'] que contiene un rango nombrado ['base'] de varias columnas
2) en la hoja 'formato de recibo' existe un combobox ['nom'] de la barra de herramientas 'cuadro de controles'
3) el combo 'muestra' la primer columna del rango 'base' [obviamente se refiere al nombre]
y esta vinculado a la celda 'I4' donde deposita la segunda columna del rango 'base' [importe base del recibo]
4) existe ademas una 'ultima' fila [vacia] en el rango nombrado ['base'] supongo para ir agregando datos nuevos -?-
[y asumo que esta ultima fila debiera quedar fuera del 'bucle de impresion'] -?-
5) el 'chiste' es ir actulizando la 'seleccion' en el combobox y que automaticamente se deposite el importe en 'I4'
la lista/cuenta en objetos ActiveX inicia de 0 hasta n_elementos {-} 1 y requiere de un 'DoEvents' [para su refresco]

[finalmente] las correcciones 'menores' al codigo de la propuesta original son por el rango nombrado, el combo y el doevents :))

saludos,
hector.

Sub Impreson_controlada()
Dim Fila As Integer
With Worksheets("base de datos").Range("base")
For Fila = 1 To .Rows.Count - 1
ActiveSheet.OLEObjects("nom").Object.ListIndex = Fila - 1
DoEvents
ActiveSheet.PrintOut
If Fila Mod 25 = 0 Then
CreateObject("WScript.Shell").Popup _
"La impresora se esta tomando un descanso..." & vbCr & _
"Favor de NO cancelar este aviso !!!" & vbCr & _
"Este aviso desaparecera en 15 segundos...", 15, "Mensaje temporal"
End If
Next
End With
End Sub
Respuesta Responder a este mensaje
#9 ElAlumno
06/11/2006 - 16:16 | Informe spam
Hola Héctor Miguel:

Eso era exactamente lo que se necesitaba; funciona de maravilla.

Te quedo altamente agradecido.

Cordial saludo,

Manuel

pd: Lo que no sabía como explicarte, era justamente el "chiste" [o sea
tu numeral 5)] ¡gracias!



Héctor Miguel ha escrito:
hola, Manuel ! [para no dejar al grupo -que no recibio el archivo- 'fuera de la jugada'] :D

1) existe una hoja ['base de datos'] que contiene un rango nombrado ['base'] de varias columnas
2) en la hoja 'formato de recibo' existe un combobox ['nom'] de la barra de herramientas 'cuadro de controles'
3) el combo 'muestra' la primer columna del rango 'base' [obviamente se refiere al nombre]
y esta vinculado a la celda 'I4' donde deposita la segunda columna del rango 'base' [importe base del recibo]
4) existe ademas una 'ultima' fila [vacia] en el rango nombrado ['base'] supongo para ir agregando datos nuevos -?-
[y asumo que esta ultima fila debiera quedar fuera del 'bucle de impresion'] -?-
5) el 'chiste' es ir actulizando la 'seleccion' en el combobox y que automaticamente se deposite el importe en 'I4'
la lista/cuenta en objetos ActiveX inicia de 0 hasta n_elementos {-} 1 y requiere de un 'DoEvents' [para su refresco]

[finalmente] las correcciones 'menores' al codigo de la propuesta original son por el rango nombrado, el combo y el doevents :))

saludos,
hector.

Sub Impreson_controlada()
Dim Fila As Integer
With Worksheets("base de datos").Range("base")
For Fila = 1 To .Rows.Count - 1
ActiveSheet.OLEObjects("nom").Object.ListIndex = Fila - 1
DoEvents
ActiveSheet.PrintOut
If Fila Mod 25 = 0 Then
CreateObject("WScript.Shell").Popup _
"La impresora se esta tomando un descanso..." & vbCr & _
"Favor de NO cancelar este aviso !!!" & vbCr & _
"Este aviso desaparecera en 15 segundos...", 15, "Mensaje temporal"
End If
Next
End With
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida