Se puede optimizar Macro de procesamiento?

Estimados Amigos de TodoExpertos, les comento que mi experiencia en programación de macros es básica y buscando en varios post de aquí y otros foros pude elaborar una macro para simplificar algunos procesos que se hacen aquí en mi oficina de manera manual, y funciona al menos decentemente, pero lo que me eh dado cuenta es que demora demasiado y a veces cuelga la maquina donde se usa esta macro, y es por eso que recurro a Uds. A ver si me pueden ayudar a mejorar el desarrollo que hice para Optimizar mi Macro, ya que aquí en mi oficina el experto en sistemas ya no trabaja con nosotros y el dejo una macro que hace algo parecido a la mía pero con otros tipo de informacion y va rapidísima, así que imagino algo debo haber hecho mal en mi desarrollo.
Espero puedan ayudarme, les comparto los links donde pueden descargar los dos archivos con las cuales trabaja la macro que les comento y los dos archivos deben estar abiertos para que funcione, el proceso donde se empieza a demorar es cuando hago click en el botón de LLENAR HOJAS (se empieza en Conteo)

https://drive.google.com/open?id=0B_DQYpfc6S27TWVkRXZrUG1NVHM

https://drive.google.com/open?id=0B_DQYpfc6S27b1IyRUtBWXNnbnM

P.D. Estimada Elsa Matilde alguna vez tu me ayudaste con una macro para insertar una línea y que ahora utilizo en una de las hojas que están adjuntas.

1 Respuesta

Respuesta
1

Estoy descargando tus archivos. Veré si puedo revisarlos para mañana y te comento.

Enviame un correo para que pueda enviártelos una vez arreglados. Los míos aparecen en el sitio que dejo al pie.

Ya te comenté por mail el tema de pasar a cálculo manual antes de arrastrar fórmulas y volverlo a automático recién al finalizar todos los pases.

Aquí dejo otro tema que también ayuda a evitar demoras:

No es necesario seleccionar hoja origen-celda-copiar. Luego seleccionar hoja destino - celda -pegar, sino que se puede hacer todo en 1 o 2 líneas sin moverte de hoja.

Sub Llenar_Hoja_Herramienta()
'Llenando Hoja Herramienta
'John Delgado
'Copiamos los datos desde la Hoja Hermes
    Application.ScreenUpdating = False
    datos = Sheets("TXT Hermes").Range("BO1").Value
    captura = Sheets("Herramienta").Range("BO1").Value
    If datos = captura Then
      MsgBox ("Todos los datos han sido capturados")
    Else
        'EM: se declara la hoja de destino
        Set hox = Sheets("Herramienta")
        'EM: se activa la hoja origen una sola vez
        Sheets("TXT Hermes").Activate
        For i = captura + 1 To datos
    'Fecha Recaudación 01 Columna A
            Cells(i, 58).Copy
            hox.Cells(i, 1).PasteSpecial Paste:=xlPasteValues
    'Fecha Recaudación 01 Columna B
            hox.Cells(i, 2) = Now
    'Data Intermedia
            Range(Cells(i, 3), Cells(i, 48)). Copy
            hox.Range("C" & i & ":AV" & i).PasteSpecial Paste:=xlPasteValues
    'Fecha Recaudación 02 Columna AW
            Cells(i, 58). Copy
            hox.Cells(i, 49).PasteSpecial Paste:=xlPasteValues
    'IDEM Final
            Cells(i, 50). Copy
            hox.Cells(i, 50).PasteSpecial Paste:=xlPasteValues
        Next
    End If
    Cells.Select
  Sheets("Proceso").Activate
End Sub

Verás 2 tipos de referencias: como Cells(i,??) o como Range("letra",i).

Estimada Elsa ¡Gracias! , y disculpa la demora en responder. Estuve cambiando la macro de acuerdo a tus sugerencias y tratando de entender la sintaxis que utilizas, y aunque la macro funciona, ahora culega la PC mucho, y no se que puedo estar haciendo mal. 

Ahora no se si debo abrir otro post para volver a preguntarte o seguimos en este mismo post.

Igual tratare de enviarte por mail mis archivos a ver si puedes revisarlos. Gracias nuevamente.

Si, por favor valora lo hecho hasta aquí ya que te envié 2 tipos de mejoras... ahora lo que resta es revisar si las incluiste correctamente en cada subrutina... y son muchas.

Por favor luego inicia otra consulta y seguiré revisando tu nuevo envío.

Sdos.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas