Saltar al contenido

Dividir un proceso - error, proceso demasiado largo


Recommended Posts

publicado

Buenos días,

Lo que sucede es que estoy teniendo problemas con una macro que estoy ejecutando pues me aparece el error que hace referencia a que el procedimiento es demasiado largo, no he podido reducirlo pues son al rededor de 270 variables que debo incluir, en el archivo adjunto incluyo una pequeña parte de esta macro donde solamente relaciono 2 variables y corre a la perfección. En general, lo que pretendo es pasar de un documento a las 270 variables al oprimir el botón "Formato".

He intentado dividir el procedimiento en varias partes pero no lo he logrado, quisiera pedir su colaboración con este tema pues por más que lo intento no lo he conseguido.

Este código es el que debo repetir las 270 veces por lo cual el procedimiento se hace muy largo, esto además de la definición de cada una de las variables...

        Set RsBusq = Nothing
Set RsBusq = .Columns("B:G").Find(what:="Lider del proyecto", lookat:=xlWhole, LookIn:=xlValues)

If Not RsBusq Is Nothing Then
Lider = RsBusq.Offset(0, 1).Value
Else
Lista_Errores = Lista_Errores & vbNewLine & "-No se pudo encontrar el valor del Lider del proyecto" _
& "en el archivo " & archivo_origen_ruta
Lider = ""
End If[/CODE]

¡¡Muchas gracias!!

Macro - Dividir proceso.rar

publicado

Hola, muchas gracias por tu respuesta,

Aún no he terminado de hacer la macro, sin embargo intenté completar el ejemplo un poco más para hacer más clara mi duda.

En el adjunto envío dos documentos que quiero pasar a otro que se llama "Archivo final" al pulsar el boton "Formato" ,

Cuando realizo este procedimento para pocas variables funciona bien (como la del ejemplo) sin embrgo al agregar más me aparece la nota de error: procedimiento demasiado largo.

Las variables son:

Persona responsable

Lider del proyecto

Nombre del proyecto

Número de identificación

Código postal

Departamento

Municipio

.

.

.

Y así sucesivamente 270 veces.

En la macro están para las dos primeras variables: Persona responsable y Lider del proyecto, al agregar las 270 es cuando me aparece ese error

El error es en el procedimiento "Sub copiar_datos" que es el que se hace demasiado extenso cuando agrego las variables, quisiera saber si es posible dividirlo en varias partes sin perder la continuidad.

Muchas gracias.

Quedo atenta a cualquier duda.

Macro - Dividir proceso.rar

publicado

segun lo que vi, esas 270 variables son los encabezados que colocaras en la hoja excel, y claro, a ser un archivo .xls no puedes ya que serían 270 columnas y Excel 2003 solo acepta 255 columnas, es eso?

si es así pudieras colocar los encabezados en la primera columna y los datos en las siguientes columnas (si no procesas mas de 255 archivos claro)

espero a ver que respondes, suerte

publicado

¡Hola!

Muchas gracias por su ayuda...

Si, esas 270 variables son los encabezados de las columnas del "Archivo Final", (estuve revisando y no son 270 si no 368 pues van de la columna A a la columna ND :() sin embargo no creo que el problema sea por la cantidad de columnas sino porque la mayor parte del proceso lo hago en el procedimiento "Sub copiar_datos" y al incluir toda esta información el pocedimiento se hace demasiad extenso.

En lo que he consultado he encontrado que la solución a este problema es dividir el procedimiento en varias partes y llamarlo desde el procedimiento anterior, sin embargo no lo he conseguido.

La macro funciona bien hasta la columna AD aproximadamente (Encabezado variable 30) de ahí en adelante me arroja el error que les menciono.

Adjunto envío un ejemplo del los documentos "Archivo Final" y "Documento 1", los originales aún los estoy construyendo:oops:.

De nuevo agradezco su ayuda...

Final y Documento 1.rar

publicado

Amigo, para estar claros, si tu archivo es excel 2003 (archivo final) tendras problemas con la cantidad de columnas, ahora si es mayor, no tendras problemas, digo esto porque el archivo que ejecuta tu macro esta en excel 2003.

de todas formas revisa el anexo, la modificacion la realice en la macro copiar_datos del modulo1, yo la ejecute y funciona correctamente

GENERAR_RESUMEN_LIGH_NVR.rar

publicado

Hola,

¡¡Muchas gracias!!

Esto me es de gran ayuda, el código se reduce bastante. Me di cuenta que perdí mucho tiempo incluyendo variable por variable.

¡EXCELENTE!

Sin embargo este nuevo código que me envías me genero una duda, existen algunos casos en que la respuesta de la pregunta o variable no se encuentra en la columna siguiente, por lo cual la ubicación general que indicas en el código:

 sValor = RsBusq.Offset(0, 1).Value[/CODE]

no funciona para todos los casos, te envío un ejemplo en el documento adjunto.

En este caso las variables "Persona responsable" y "Líder del Proyecto" presentan una ubicación diferente, por lo tanto no sería (0,1) si no (1,0), además la búsqueda no debe realizarse solo en las columnas B:G sino en las B:D y G:I. Por lo tanto el "rEncabezado" general no funcionaría, sería ideal poder usar varios "Encabezados" que me permitan incluir estos cambio

¡De nuevo muchas gracias por su valiosa ayuda!

Documento 1.rar

publicado

No existe la forma más bien que el archivo de donde se leen los datos sea modificado?, de una manera que los datos estén en dos columnas y no como están ahora?

Pudieras colocar un condicional si la variable es "Persona responsable" o "Líder del Proyecto" lo lea la otra columna en caso contrario que lea la que es

publicado

Hola....

Las soluciones que me han dado me han sido de gran ayuda, las he podido usar en algunas macros, sin embargo aún tengo inconvenientes con el proceso que es demasiado extenso, he revisado algunos foros y he visto que puede dividirse usando la función "Call" para llamar otro proceso, algo así como dividir el proceso largo en dos partes y luego llamar uo dentro del otro y así evitar este error, sin embargo no me funciona.

En el documento adjunto envío un ejemplo de la macro con la estoy presentado inconvenientes, este ejemplo corre a la perfección hasta donde voy, la variable 60, llamada "Encabezado variable 60". Sin embargo al rededor de la variable 180 me genera el error que les comento, asumo que esto sucede por lo extenso del procedimiento "Sub copiar_datos(ByVal archivo_origen_ruta As String, ByVal archivo_destino As String)".

He optado por hacer dos macros diferentes que me generen dos archivos finales y luego pegarlos para consolidar todo en uno solo, sin embargo no pierdo la esperanza de que esta división pueda hacerse....

¡Les agradezco su ayuda!

Dividir Proceso.rar

publicado

Hola, gracias por tu rápida respuesta, por ahora solo tengo el formato del documento uno que envié en la última carpeta comprimida llamada Dividir proceso, si me ayudas con ese es más que suficiente...

No estaba muy segura con lo de transponer puesto que tengo varias variables que en ubicaciones diferentes, por ejemplo el Nombre de Lider del proyecto, el de la persona responsable, la ciudad se repite dos veces, etc... No se si al trasponer quede todo en orden

De todas maneras cualquier ayuda me sirve :).

¡¡Gracias!!

publicado

@[uSER=171141]Angelica_[/uSER], yo pregunte esto y no me respondiste

No existe la forma más bien que el archivo de donde se leen los datos sea modificado?, de una manera que los datos estén en dos columnas y no como están ahora?

Pudieras colocar un condicional si la variable es "Persona responsable" o "Líder del Proyecto" lo lea la otra columna en caso contrario que lea la que es

es muy simple, puedes modificar tu el formato donde esta la información a copiar?, de forma tal que puedas "estandarizarlo"; si no puedes, ni modo, pero si es posible, sería la solución ideal.

con todo el respecto, el codigo que empleas es una locura, hacer eso para 200-300 variables es un dolor de cabeza, el código que yo propuse en el archivo que subi debería funcionarte sin mayores problemas, tal vez en vez de buscar por el nombre de la variable se puede buscar por el número de la variable (así evitas el problema cuando hay variables con el mismo nombre), para la mayoria de las variables el codigo sería el mismo, en algunos casos como: Persona responsable, Lider del Proyecto, Departamento, etc. se realizaría una ligera variación para leer el campo correcto.

sin embargo para todo esto se debe tener en cuenta que el formato debe ser siempre igual (mantener la misma estructura), pues si tienes diferentes formatos es casi imposible hacer algo que se ajuste a todos los formatos; no importa que el formato NO tenga toda la información completa, lo importante es mantener el formato.

si usas varios formatos, pues sería de mucha ayuda si los subes para ver si se puede implementarse el codigo

publicado

Si modificas el formato(s) como sugiere big, aprovecha para eliminar las celdas combinadas que ocasionan mas problemas que benficios, en todo caso aumenta el tamaño de las filas e idealmente coloca todos los datos en una sola columna, una variable por fila, aunque aumente el numero de filas.

publicado

Hola,

@[uSER=133908]bigpetroman[/uSER], con respecto a tu duda de modificar el formato, no es posible, este formato lo usan muchas personas y cambiarlo sería todo un problema...

Yo terminé el código de las 300 variables y como tu dices si es una locura, por esta razón me arroja el error de que el procedimiento es demasiado largo, por esto decidí dividirlo en dos macros diferentes y luego hacer el copiado, lo que no me toma mucho tiempo.

La información que me han dado me es de gran ayuda pues esta es la primera macro que hago...

Este tema queda solucionado.

¡Muchas gracias!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.