2014-10-25

Duplicar y cerrar libro de Excel mediante VBA

En otra entrada vimos como duplicar el fichero de Excel y cómo capturar la respuesta del usuario con mensajes emergentes (msgbox). En esta ocasión combinamos ambas para tras duplicar el fichero preguntar al usuario si quiere cerrar el fichero actual (sin guardar los cambios) y abrir el nuevo fichero duplicado.

Option Explicit
Sub DuplicarLibroCerrar()
    Dim wb As Workbook, sRuta As String
    sRuta = ThisWorkbook.Path & "\" & _
    Format(Now, "yyyymmdd") & Chr(32) & ThisWorkbook.Name
    ThisWorkbook.SaveCopyAs Filename:=sRuta
    
    Dim resp As String
    resp = MsgBox("¿Quieres abrir el duplicado y cerrar éste?", vbYesNo)
        If resp = vbYes Then
        Set wb = Workbooks.Open(sRuta)
        ThisWorkbook.Close
        Else
        End If
End Sub
Guardará una copia del libro activo en la misma ruta del libro, con el nombre precedido de la fecha y un espacio. P. ej.: Libro1.xlsm se guardará como 20140519 Libro1.xlsm.Si también queremos la hora reemplazamos por "yyyymmdd" por "yyyymmdd-hh.mm.ss" u otro formato deseado.

Aparecerá esta ventana emergente al finalizar:

En el caso de que el fichero ya cuente con una fecha y espacio delante del nombre del fichero, empleamos este macro:

Option Explicit
Sub DuplicarLibroCerrar2()
    Dim sNomb As String, sNombSinFecha As String ' Nombre con y sin fecha
    sNomb = ThisWorkbook.Name ' Nombre entero
    sNombSinFecha = Right(sNomb, Len(sNomb) - InStr(1, sNomb, " ")) 
    
    Dim wb As Workbook, sRuta As String
    sRuta = ThisWorkbook.Path & "\" & _
    Format(Now, "yyyymmdd") & Chr(32) & sNombSinFecha
    ThisWorkbook.SaveCopyAs Filename:=sRuta
    
    Dim resp As String
    resp = MsgBox("¿Quieres abrir el duplicado y cerrar éste?", vbYesNo)
        If resp = vbYes Then
        Set wb = Workbooks.Open(sRuta)
        ThisWorkbook.Close
        Else
        End If
End Sub
Extrae el nombre del fichero sin fecha y le añade la fecha actualizada.

Entradas relacionadas:
Duplicar libro de Excel mediante VBA

No hay comentarios:

Publicar un comentario

Nube de datos