Llevar hojas de un libro de Excel a hojas en libros separados

Una actividad muy inusual que un usuario básico, medio, o quizás avanzado puede llegar a realizar desde la interfaz de usuario con un libro de trabajo de Excel, es trasladar las múltiples hojas de dicho libro, a libros independientes o separados que contengan una hoja por libro de Excel.


Está tarea, aunque se observe un poco descabellada y en muchas ocasiones hasta innecesaria, constituye una actividad rutinaria en ambientes de trabajo administrativos donde las fuentes de datos se mezclan en un libro único con múltiples hojas debido a la poca estandarización de los procesos en las labores cotidianas.

Es por ello que coloco a tu disposición un sencillo Procedimiento Sub desarrollado con VBA (Visual Basic para Aplicaciones) con el único fin de que sólo copies y pegues el código en un módulo estándar del IDE (Entorno de Desarrollo Integrado) del Editor de Visual Basic de tu libro de Excel, lo ejecutes y obtengas el resultado en muy poco tiempo y con casi nada de esfuerzo.

Procedimiento Sub

Sub CopiarHojasEnNuevosLibros()
   If ThisWorkbook.Worksheets.Count > 1 Then
      Dim sRuta As String
      Dim sNombreCarpeta As String
      Application.ScreenUpdating = False
      sNombreCarpeta = Format(Date, "dd-mm-yyyy") & "-" & _
                                  Format(Time, "hh-mm-ss")
      sRuta = Application.GetSaveAsFilename(InitialFileName:=sNombreCarpeta, _
                                                                Title:="Establezca una ruta de guardado")
      sRuta = Replace(sRuta, ".", "")
      If sRuta <> "Falso" Then
         MkDir (sRuta)
         Dim HojaAux As Worksheet
         For Each HojaAux In ThisWorkbook.Worksheets
            HojaAux.Copy
            ActiveWorkbook.SaveAs Filename:=sRuta & Application.PathSeparator & _
                                                                HojaAux.Name
            ActiveWorkbook.Close SaveChanges:=True
         Next HojaAux
         MsgBox "Listo."
      End If
      Application.ScreenUpdating = True
   Else
      MsgBox "No hay suficientes hojas.", vbInformation, "Atención"
   End If
End Sub

En caso de estar interesado en aprender a construir este sencillo procedimiento desde cero para realizar algún cambio o modificación en el código, con gusto puedes remitirte a un video de apoyo que construí para ese fin. Además, puedes descargar el libro de Excel que usamos en ese video.


3 comentarios: