Crear una carpeta con VBA en Excel - Primera parte

Una manera pragmática con la que solemos hacer orden en nuestros ordenadores es creando directorios o carpetas en el sistema operativo para almacenar los múltiples ficheros que creamos en nuestros quehaceres diarios con la computadora.

Guardar o almacenar un libro nuevo de Excel en nuestra computadora es algo relativamente simple desde la interfaz de usuario de este aplicativo. Sólo basta con hacer clic en la pestaña Archivo y luego seleccionar el comando Guardar para desplegar el cuadro de dialogo Guardar como... y posteriormente seleccionar una ruta de almacenamiento.


Es aún más simple cuando se trata de un libro de Excel ya existente (ya creado). Ya que, con sólo presionar el icono del disquete desde la ToolBar, o presionar la combinación de teclas Ctrl + G, podemos salvar los cambios hechos en nuestra hoja de cálculo.

Sin embargo, automatizar esta tarea tan simple desde el entorno de desarrollo del Visual Basic para Aplicaciones, quizás es lo que muchos buscan al momento de hacer práctica esta rutina. Más aún cuando se trata de crear una carpeta o directorio nuevo en una ruta específica de nuestro sistema; obviamente para disponer allí una copia de nuestro libro de Excel.

Por ejemplo, si te diriges al entorno VBA de un proyecto de Excel que estés trabajando, e insertas un módulo estándar y posteriormente escribes el siguiente código; podrás crear rápidamente una carpeta que contendrá una copia del libro de Excel desde donde ejecutes dicha rutina. La carpeta creada será nombrada con la fecha y hora de tu sistema, y además se almacenará en la misma ubicación del libro de Excel desde donde ejecutes esta rutina.

Procedimiento Sub para crear una carpeta con una copia del libro de Excel activo

Sub Crear_Carpeta_Y_Guardar()
      Dim sRuta As String
      Dim sNombreCarpeta As String
      Dim sSeparadorRuta As String
      Dim sNombreLibroActual As String

      sNombreLibroActual = Application.ActiveWorkbook.Name
      sSeparadorRuta = Application.PathSeparator
      sRuta = Application.ActiveWorkbook.Path
      sNombreCarpeta = CStr(Format(Date, "dd-mm-yyyy")) _
          & "-" & CStr(Format(Time, "hh-mm-ss"))
      If Dir(sRuta & sSeparadorRuta & sNombreCarpeta, vbDirectory) = Empty Then
            MkDir (sRuta & sSeparadorRuta & sNombreCarpeta)
      End If
      Application.ActiveWorkbook.SaveCopyAs Filename:=sRuta _
          & sSeparadorRuta & sNombreCarpeta & sSeparadorRuta & sNombreLibroActual
      Application.StatusBar = "Una copia se guardó en: " & sRuta _
          & sSeparadorRuta & sNombreCarpeta & sSeparadorRuta & sNombreLibroActual
End Sub

Nota: si asignas el Procedimiento Sub Crear_Carpeta_Y_Guardar() a una autoforma desde la interfaz de usuario, podrás ejecutarlo fácilmente al hacer clic en ella.

Si analizas con detenimiento el anterior programa, podrás notar que una vez se crea la carpeta y se almacena el libro de Excel activo, Excel desde la interfaz de usuario muestra en la barra de estado un mensaje de confirmación.

Pues bien, para que esté mensaje no permanezca durante todo el tiempo en que el libro de Excel esté activo, procedemos a desactivarlo con la siguiente rutina que se ejecuta al cambiar la selección de una celda en cualquier hoja del libro de Excel.

Rutina que desactiva el mensaje en la barra de estado de Excel

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
      If Not (Application.StatusBar = False) Then
            Application.StatusBar = False
      End If
End Sub

Nota: la anterior rutina debe establecerse en el evento SheetSelectionChange desde el módulo del objeto ThisWorkbook.

Algo muy importante que debes tener en cuenta antes de ejecutar el presente programa, es que debes guardar inicialmente en tu sistema el libro de Excel base con el código; de lo contrario quizás puedas obtener un resultado no controlado.

Si aún no te queda claro cómo implementar estas dos rutinas en un libro de Excel, observa este video tutorial de apoyo y aprende a realizarlo.

Si quieres seguir el video paso a paso puedes empezar con un Libro de Excel en blanco; sino es tu caso, descarga el Libro de Excel terminado.

1 comentario: