Excel - Macro para liberar memoria usada

 
Vista:

Macro para liberar memoria usada

Publicado por Nelson Torres (63 intervenciones) el 23/11/2011 17:59:26
Hola a todos!

Hace poco publique un mensaje en donde mi duda radicaba en como pausar una macro que se encarga de la generación de registros en formato pdf y los guarda en una carpeta predestinada para 250 y máximo 330 empleados. el objetivo de pausar dicha accion era el de darle tiempo a un código consecutivo que debe adjuntar el archivo y enviarlo a las cuentas de cada empleado. Cuando ejecuto la macro el sistema me realiza la primer acción pero la segunda no se ejecuta. Con un simple copiar y pegar para realizar modificaciones me di cuenta que el sistema estaba sobrecargado en su memoria y por lo tanto la acción de pausa es inútil, mi pregunta en este caso es si existe una macro que pueda liberar la memoria usada por variables y procedimientos de guardar como en pdf, para que la aplicación ejecute el código de enviar correos de una forma liviana sin sobrecargarlo de tal manera que el código pueda usarse desde cualquier computador con cualquier sistema operativo sin que hayan inconvenientes. Yo uso Excel 2010 y la aplicacion puede usarse en Excel 2007.

Les agradezco su ayuda

Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

Macro para liberar memoria usada

Publicado por JuanC (1237 intervenciones) el 23/11/2011 18:24:09
es imprescindible ver el código para investigarlo...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro para liberar memoria usada

Publicado por Nelson Torres (63 intervenciones) el 23/11/2011 19:31:12
Seguro!! Aunque es muy largo le envio las partes que creo consumen mas memoria:

la macro empieza con una seria de instrucciones sencillas pero largas en donde se genera un formato de desprendible de nómina como esta:

ActiveCell.Offset(7, 3).CurrentRegion.Clear
ActiveCell.Offset(1, 5).Value = StrConv(Costo, vbUpperCase)

En el codigo uso 5 variables de tipo String, 6 variables de tipo Long, 8 variables de tipo Integer y 1 variable de tipo Variant.

Al final del codigo cuando ya tengo el formato realizado le entrego esta instruccion

ChDir "D:\Desktop\Desprendibles"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nombre

Nombre es la concatenacion de 4 celdas que juntan primeros y segundos apellidos y nombres de la siguiente manera:

Nombre = ActiveCell.Value & " " & ActiveCell.Offset(0, 1).Value & " " & _
ActiveCell.Offset(0, 2).Value & " " & ActiveCell.Offset(0, 3).Value

Cuando la hoja de calculo ya se a guardado en la ruta especificada como formato pdf, ahora implemento el siguiente código:

Dim oMsg, oConf, Flds As Variant
Set oMsg = CreateObject("CDO.Message")
Set oConf = CreateObject("CDO.Configuration")
oConf.Load -1
Set Flds = oConf.Fields

With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Pasword"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Update
End With

With oMsg
Set .Configuration = oConf
.From = """Asunto"" <[email protected]>"
.To = Destino
.Subject = Nombre
.TextBody = "Estoy enviando archivos adjuntos"
.AddAttachment ("D:\Desktop\Desprendibles\" & Nombre & ".pdf")
.Send
End With

ActiveCell.Offset(1, 0).Activate

... y lo que debería pasar es que yo tenga una lista de empleados con su dirección de correo, en donde yo asigne la dirección a una variable para que sea enviado el desprendible,pero por ahora lo estoy probando con mi correo. El problema es que envía los dos o máximo tres primeros desprendibles y luego me arroja un error que me pide reiniciar Excel o buscar una solución en linea. Ya probé los códigos por aparte, me acabo de dar cuenta de que cuando yo ejecuto la orden de guardar como pdf se presenta el error. Cuando yo ejecuto la macro para enviar el correo no hay problema. Me entere de una forma de liberación de memoria y la aplique así:

Set oMsg = Nothing
Set oConf = Nothing
Set Flds = Nothing
Nombre = Nothing

... y lo mismo hice con las demás variables pero hasta ahora no tengo los resultados deseados, si puede ayudarme de lo agradezco y si necesita mas información no dude en pedirla.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

Macro para liberar memoria usada

Publicado por JuanC (1237 intervenciones) el 23/11/2011 23:04:01
en verdad necesito todo el código...
podrías enviarme el archivo (aunque no sea el original, una copia modificada estaría bien)

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro para liberar memoria usada

Publicado por enrique54 (90 intervenciones) el 25/11/2011 18:19:07
hola

mystring=(16000000)
es el código vbs que uso para liberar memoria ram
no se si se puede incluir en la macro
pero solo es un archivo de texto que se renombra la extensión y funciona perfectamente después de considerar que la maquina esta saturada


espero ayude este comentario


saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar