Macro lenta alternativas para hacerla mas rápida

Tengo la siguiente macro:

Sub REGISTROS()
'Act.Por.Dante Amor
    Application.Visible = False
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = Sheets("VISITAS")
    Set h2 = Sheets("CARTERA")
    '
    u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    h1.Range("C5:C14").Copy: h2.Range("A" & u).PasteSpecial Paste:=xlPasteValues, Transpose:=True
    h1.Range("F5:F14").Copy: h2.Range("K" & u).PasteSpecial Paste:=xlPasteValues, Transpose:=True
    h1.Range("F2").Copy: h2.Range("U" & u).PasteSpecial Paste:=xlPasteValues, Transpose:=False
    h2.Range("V3:Y3").Copy h2.Range("V" & u)
    h2.Range("F" & u).TextToColumns Destination:=h2.Range("Z" & u), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 2), Array(1, 1), Array(4, 1)), TrailingMinusNumbers:=True
    h2.Range("AC3").Copy h2.Range("AC" & u)
    h2.Range("H" & u).TextToColumns Destination:=h2.Range("AD" & u), _
        DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Space:=True, _
        FieldInfo:=Array(Array(1, 2), Array(2, 2)), TrailingMinusNumbers:=True
    h2.Range("AF" & u) = "=TEXT(RC[-31],""yyyy"")"
    h2.Range("AG" & u) = "=TEXT(RC[-32],""mmmm"")"
    h2.Range("AH" & u) = "=IF(RC[-4]="""","""",IF(RC[-4]=""plan"",""Particulares"",RC[-3]))"
    '
    h1.Unprotect Password:="0976342842"
    H1. Range("F5:F7"). ClearContents
    H1. Range("F10:F12"). ClearContents
    H1. Range("F14"). ClearContents
    H1. Range("C6:C7"). ClearContents
    H1. Range("C9:C12"). ClearContents
    H1. Range("C14"). ClearContents
    h1.Range("F2") = h1.Range("F2") + 1
    h1.Protect Password:="0976342842"
    Application.ScreenUpdating = True
    Application.Visible = True
    ActiveWorkbook.Save
    Dim FileWsh As Object
    Set FileWsh = CreateObject("Scripting.FileSystemObject")
    MiVolumen = Hex$(FileWsh.Drives("C").SerialNumber)
    Select Case MiVolumen
        Case "9A42EB79"
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Sheets("CARTERA").Visible = True
    Sheets("CARTERA").Copy
    ruta = "\\DERMATOLOGA1\manager\Consultorio\"
    ActiveWorkbook.SaveAs ruta & "Registros.xlsx", FileFormat:=xlOpenXMLWorkbook
    ActiveWorkbook.Close
    Sheets("CARTERA").Visible = xlVeryHidden
     Case Else
    End Select
    Set FileWsh = Nothing
End Sub

Mi inquietud es si así como está diseñada es lo más ágil que se puede hacer la macro o hay manera de hacerla más ágil.

He estado leyendo del tema de acelerar macros y he encontrado estas alternativas, se les envió ya que uds que saben mas de macros sabrán si para esta macro en particular aplican o no aplican esos cambios y si aplican me gustaría que me ayudaran a implementarlos pues de pronto pongo algún código donde no es y lo que causo es una catástrofe.

Aquí envío las sugerencias que encontré en algunas páginas de Internet:

AL COMIENZO DE LAS MACROS

Application.screenupdating=False
Application.calculation=xlCalculationManual
Application.EnableEvents=False
ActiveSheet.DisplayPageBreaks = False

EN LA FINALIZACION

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False

Usar la instrucción WITH

Evitar la instrucción SELECT

Evitar blucles  loops FOR EACH

Usar las funciones nativas de Excel

Los datos los tomé de esta fuente de información:

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros-excel/ 

1 respuesta

Respuesta
2

Ya con colocar el modo de cálculo en manual al inicio y volverlo a automático al finalizar el proceso notarás gran diferencia, no se si vale la pena agregar el resto.

Probalo comentame para que siga revisando el resto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas