Saltar al contenido

Dividir un proceso - error, proceso demasiado largo


Recommended Posts

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

¡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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

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!!

Enlace a comentario
Compartir con otras webs

@[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

Enlace a comentario
Compartir con otras webs

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!

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Buenas noches quisiera hacer esta formula auto incremental    =SI(INDIRECTO("'Casos de Prueba'!I1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!I:I"); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!I:I"); "OK")); 0)      para que cada vez que copiase y pegase la celda con la formula  se incrementara la letra en este caso la I pasara a J ,como el numero perteneciente a Resultados Ciclo pasando en este caso del 1 al 2.   Tengo también esta formula =CONCATENAR("CP";TEXTO(MAX((SI((ESNUMERO(HALLAR("CP";A$1:A1)))*(A$1:A1<>"");VALOR(EXTRAE(A$1:A1;3;3));0))+1);"000")&" - "&B2) quisiera que no tuviera los 3 ceros si no que fuera por ejemplo CP1 y se fuera incrementando. Gracias un saludo.
    • Con el diseño así como lo tiene en su libro, una fórmula de BUSCARV con COINCIDIR debería ser de utilidad =C5*BUSCARV($C$1,Tabla1[#Todo],COINCIDIR($D5,Tabla1[#Encabezados],0)) Es con lo que participaría en su consulta. Lo que resta es definir que hacer si no encuentra la OT porque así como esta le devolvería error en ese caso, o si tiene condiciones que haya podido omitir también le afectarían el resultado.
    • He cambiado mi macro a este: Sub repetir() Set a = Sheets(ActiveSheet.Name) uf = a.Range("C" & Rows.Count).End(xlUp).Row 'ultima fila con datos ActiveCell.Select ActiveCell.Offset(1, 0).Select   'Application.OnTime Now + TimeValue("00:00:10"), "repetir", , True End If End Sub   Lo que no se es como detenerlo al llegar a la ultima fila con datos de la columna C. Muchas gracias
    • Buenas tardes a todos. Tengo un problema que preciso de vuestra ayuda.  Tengo que controlar los gastos de la oficina que trabajo y he de repartir unos gastos a % según una OT y unos tipos de gastos. Envío un archivo adjunto. Lo que necesito es que lo que aparece en la columna en amarillo lo haga automáticamente, teniendo en cuenta los datos de la tabla a la derecha. Por ejemplo, el primer gasto tiene una cuota de 1477 euros y teniendo en cuenta que es un gasto de tipo Común y que la OT es la 12810234, le corresponde un gasto de 605,57 euros ya que según la tabla de la derecha su % a imputar es de un 41%. ¿alguien me puede ayudar con la formula? He de añadir muchas más líneas y más hojas con el resto de OT y en el futuro cambiar más datos, así que necesito automatizarlo con una formula Excel. Gracias. Control de gastos.xlsx
    • Hola buenas tardes: Por favor me pueden ayudar a realizar lo siguiente. ejecutar una macro después de un tiempo, que recorra una columna a partir de la celda activa hacia abajo. Es una lista extensa, que filtro desde la columna B. y solo me muestra las filas que me interesan. ejemplo: Si mi celda activa es la C23 ejecutar la macro y baje una celda y repite la macro después de 20 segundos y lo vuelve hacer(Simpre bajando una celda), y que este se detenga hasta la ultima fila que este visible en el filtro. Ya que puedo tener muchos datos mas.   Gracias   Prueba filtro y avance.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.