Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

copiar todas las hojas en nuevo libro

publicado

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.

Featured Replies

publicado
  • Autor

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

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.