Jump to content

copiar todas las hojas en nuevo libro


Recommended Posts

Hola, utilizo el siguiente código para guardar periódicamente mi libro:

Sub auto_open()
Tiempo = Now + TimeValue("00:30:00")
Application.OnTime Tiempo, "Guardar"
End Sub

Sub Guardar()
Workbooks("MARZO 2012.XLSB").Save
Call auto_open
End Sub[/HTML]

Este libro lo utilizo las 24Hs. los 365 días del año y en ocasiones informa de un error y deja de guardar o sale un aviso que dice que no se puede guardar, ni siquiera manualmente. El problema es que mis empleados cierran el aviso de error y siguen trabajando como si nada, con la inevitable perdida de datos.

Mi idea es utilizar el comando "on error goto" para copiar todas las hojas del libro y pegarlas en uno nuevo conservando solo valores y formatos.

También si es posible enviar un mensaje a mi cuenta de gmail informando que se detuvo la macro.

Este es el código en el que estoy trabajando:

[HTML]Sub COPIAR_HOJA()

Dim xSheet As Variant
Dim xSt As Long
Dim xWbook As String
Dim xWorb As Object

On Error Resume Next

ReDim xSheet(ThisWorkbook.Sheets.Count - 2)
For xSt = 2 To ThisWorkbook.Sheets.Count
xSheet(xSt - 2) = ThisWorkbook.Sheets(xSt).Name
Next xSt
Sheets(xSheet).Copy
Set xWorb = Workbooks(Workbooks.Count)
xWbook = ThisWorkbook.Path & "\Libro.xls"
With xWorb
For xSt = 1 To .Sheets.Count
.Sheets(xSt).Cells.Copy
.Sheets(xSt).Cells.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Next xSt
.SaveAs Filename:=xWbook, FileFormat:=xlNormal
.Close
End With

End Sub[/HTML]

Muchas gracias.

Link to comment
Share on other sites

Estimados amigos del foro: mi nivel de programación es básico y me costó bastante lograrlo, pero buscando por la web encontré un ejemplo que soluciona parte de mi problema y quiero compartirlo con ustedes.

Sub auto_open()
tiempo = Now + TimeValue("00:15:00")
Application.OnTime tiempo, "Guardar"
End Sub
_______________________________________________________________________________
Sub Guardar()
On Error Resume Next
Workbooks("MARZO 2012.XLSB").Save
If Err <> 0 Then Call MAIL
Call auto_open
End Sub
_______________________________________________________________________________
Sub MAIL()
'Si hay errores, que continúe
On Error Resume Next
'Creamos el Message y Configuration, para
'enviar emails a través del objeto CDO de Windows
Set oMsg = CreateObject("CDO.Message")
Set oConf = CreateObject("CDO.Configuration")
'Cargamos los valores por defecto
oConf.Load -1
'Configuramos el objeto CDO, con los datos
'de nuestra cuenta de correo
Set Flds = oConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'ponemos nuestra cuenta de correo de GMAIL
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mi_email@gmail.com"
'ponemos nuestro password de GMAIL
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mi_password"
'este es el smtp de GMAIL. Si usamos Hotmail, yahoo, o cualquier otro
'servicio de correo, deberemos configurar el smtp, y evidentemente
'también el nombre de usuario y el password para esa cuenta
.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
'ponemos el nombre y correo para el reply
.From = """mi_nombre"" <mi_email@gmail.com>"
.To = "Destinatario"
.Subject = "titulo"
.TextBody = "mensaje"
.Send
End With
'Mostramos un mensaje, tanto si hay
'errores como si no los hay
If Err <> 0 Then
MsgBox ("Se ha producido un error, notificar al administrador.")
Else
MsgBox ("Se ha producido un error, ya se notificó al administrador por mail.")
End If
End Sub
[/HTML]

También encontré el complemento "Autobackup", muy útil para realizar backup de todos los libros que se abran.

Al instalar el complemento se ejecutará automáticamente las opciones de configuración:

1. Carpeta donde guardar los backups

2. Tiempo de intervalo del guardado

3. Cuántas copias mantener

Si indicas mantener 3 copias por ejemplo, siempre tendrás 3 últimas versiones del backup.

Adjunto el archivo.

Saludos.

autobackup.zip

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy