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/