Código para repetir una macro a partir de una lista en excel 2003

Hola amigos: En mi libro de Análisis.xls, en la hoja 1 tengo un formulario que tengo que llenar como doscientas veces con datos de una base en otro libro(captura.xls). Para simplificar la tarea en el libro Analisis.xls coloqué en la celda A1(de la hoja 1) una VALIDACIÓN a una lista de números de expediente (está en la hoja2 y le puse de nombre número de expediente). Evidentemente cuando cambio de número de expediente el formulario se llena automáticamente con los datos correspondientes por las formulas que implementé. Hasta ahí no hay problema, pero tengo que guardar una copia del formulario por cada expediente, entonces mediante macros logré que se me generé una hoja por cada expediente con el nombre de la persona en otro libro que llamé Evalúaciones.xls. Pues bien, esto lo hago en forma manual, es decir de número de expediente en número, yo lo voy seleccionando. Ahora quisiera un código que me recorriera cada número de expediente, lo insertara en la hoja 1, celda A1 y que por cada número de expediente que vaya insertando vaya ejecutando la macro que creé para generar los formularios (hojas con el nombre de la persona) en el libro Evaluaciones.xls Ojala que me puedan ayudar. De antemano gracias. Saludos. Alexx, Los Mochis, Sinaloa

1 Respuesta

Respuesta
1

Te explico la idea. Las referencias están a modo de ejemplo.

Sub TODOS_EXPEDIENTES()

'x Elsamatilde

'recorrer la lista de nros de la hoja2 que asumo estará en col A a partir de fila 2

For i = 2 to sheets("Hoja2").range("A65536").end(xlup).row

'como estoy en la hoja 1, vuelco el nro en A1

RAnge("A1") = sheets("Hoja2").Cells(i,1)

'ya tengo colocado el nro y entiendo que con esto se lleno el formulario.

CALL MACRO_GENERA_HOJA

'debo seguir con el próximo nro

Next i

End Sub

Armala, probala y comentame si necesita algún ajuste. Si todo marcha bien no olvides finalizar la consulta.

Gracias Querida Elsa Matilde: Me ha sido de gran utilidad, aunque por ser novato, en varios intentos me devolvió error, por ejemplo cambié el range("A"") por ("O6), que era una celda combinada y con validación de datos y no me funcionó, así que en O6 tuve que poner formula refiriéndose a A1 (en O6 puse =A1) y asi me funcionó. Tengo preguntas: 1) Porque enviar el recorrido de números hasta: range("A65536"), yo solo tenía 200 filas, ¿es posible señalar solo las 200 filas?; 2) En la forma en que se ejecuta la macro tengo que tener activa la hoja 1, pero como podría hacer lo mismo si mi hoja activa no fuera la hoja 1, por decir algo que yo este en la hoja 2 y por accidente ejecuto la macro, entonces me produce un cambio en A1 pero de la hoja 2 que no deseo. ¿Se puede señalar la hoja en la que debe trabajar cada instrucción? Gracias de antemano.

Paso a aclarar los puntos:

1- No se recorre '... hasta: range("A65536")' sino que se recorre hasta

range("A65536").end(xlup).row

Es decir, hasta la primer celda ocupada desde el final hacia arriba.

Esto te evita el error que puede suceder si no hubiera datos en el rango y también te evita el ingresar un valor fijo que en otro momento pudiera ser otro.

2- Para que solo se ejecute desde la Hoja 1 agregá la o las líneas en negrita:

Sub TODOS_EXPEDIENTES()
'x Elsamatilde

Sheets("Hoja1").select


Si en cambio no deseas que se vea que se pasó a la hoja1, colocá estas 2:

Application.ScreenUpdating = False

Sheets("Hoja1").select

El comentario acerca de la validación... la celda O6... no entendí, pero me parece que eso no tiene nada que ver con la macro.

Lo referente a la celda O6, es lo siguiente: se trata de dos celdas combinadas O6 y P6, entonces en lugar de volcar el número en A1, lo traté de volcar en O6, pero no se ejecuto el código, por esa razón pensé que tal vez era por la validación o por ser una celda combinada, y por esa razón seguí volcando el numero en A1 y en O6 puse la formula =A1. Pero el caso es que me funcionó muy bien y te agradezco mucho tu ayuda.

Bien, entonces solo resta que finalices la consulta.

Sdos

Elsa

Como siempre, muy rápida y acertada la respuesta de Elsa Matilde. Gracias por compartir tus conocimientos. Saludos. Alexx, Los Mochis, Sinaloa, México.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas