Hace unas semanas un lector me planteaba la siguiente pregunta:
La idea, parece por tanto clara, ¿podemos desde Excel gestionar la creación y/o renombrar Carpetas de nuestros directorios?.
La respuesta, obviamente, es que sí.. empleando el Objeto "Scripting.FileSystemObject", y para este caso concreto, un método asociado: .MoveFolder.
Es importante mencionar, de hecho existen algunos controles en la propia macro, que el nuevo nombre de la carpeta NO puede existir!!.
Con esta premisa, ya estamos en disposición de incorporar el código necesario...
Si vemos nuestro explorador de Windows, observamos la carpeta que deseamos cambiar:
E:\excelforo\00CarpetaVieja
Insertamos nuestro código en un módulo estándar de nuestro proyecto de VBA desde el editor de VB:
Y tras ejecutar nuestro procedimiento obtendríamos la nueva Carpeta..., por supuesto, la vieja ha desaparecido...
...necesito cambiar la ubicación de una carpeta en otra ubicación, pero reemplazando el nombre original por la fecha y hora del sistema. Por ej si la carpeta se llama balance, se copia y se pega con el nombre 21-07-2015 16:15, y así todas las veces que pegue una nueva carpeta sin sobreescribirla ya que sera distintas por la fecha del sistema. |
La idea, parece por tanto clara, ¿podemos desde Excel gestionar la creación y/o renombrar Carpetas de nuestros directorios?.
La respuesta, obviamente, es que sí.. empleando el Objeto "Scripting.FileSystemObject", y para este caso concreto, un método asociado: .MoveFolder.
Es importante mencionar, de hecho existen algunos controles en la propia macro, que el nuevo nombre de la carpeta NO puede existir!!.
Con esta premisa, ya estamos en disposición de incorporar el código necesario...
Si vemos nuestro explorador de Windows, observamos la carpeta que deseamos cambiar:
E:\excelforo\00CarpetaVieja
Insertamos nuestro código en un módulo estándar de nuestro proyecto de VBA desde el editor de VB:
Sub Reubicar_Carpeta() 'Para MOVER una carpeta de una Ubicación a otra... Dim RutaCarpetaVieja As String, RutaCarpetaNueva As String 'Indicamos los nombres y ubicaciones de la Carpeta a mover... RutaCarpetaVieja = "E:\excelforo\00CarpetaVieja" RutaCarpetaNueva = "E:\excelforo\00CarpetaNueva" 'OJO!!!: no podremos crear una carpeta ya existente!!! 'con este objeto proporcionamos acceso al sistema de archivos de nuestro equipo... Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") 'controlamos que no hayamos terminado nuestra ruta con barra invertida \ 'ni en la Carpeta Vieja If Right(RutaCarpetaVieja, 1) = "\" Then RutaCarpetaVieja = Left(RutaCarpetaVieja, Len(RutaCarpetaVieja) - 1) End If 'ni en la Nueva If Right(RutaCarpetaNueva, 1) = "\" Then RutaCarpetaNueva = Left(RutaCarpetaNueva, Len(RutaCarpetaNueva) - 1) End If 'También verificamos que existe la carpeta original a mover... If FSO.FolderExists(RutaCarpetaVieja) = False Then MsgBox "EH!!!, esta " & RutaCarpetaVieja & " no existe!!!" Exit Sub End If 'y que NO existe el destino.... If FSO.FolderExists(RutaCarpetaNueva) = True Then MsgBox "Atención!!! la Carpeta" & RutaCarpetaNueva & " ya existe..." & vbCrLf & _ ", y NO es posible desplazarla a una Carpeta ya existente!!!" Exit Sub End If 'Momento para cambiar la ubicación de la Carpeta. 'Empleamos el método MoveFolder para mover de un lugar a otro... FSO.MoveFolder Source:=RutaCarpetaVieja, Destination:=RutaCarpetaNueva 'mensaje de confirmación MsgBox "Hemos movido la Carpeta " & RutaCarpetaVieja & " hasta la nueva ubicación " & RutaCarpetaNueva End Sub
Y tras ejecutar nuestro procedimiento obtendríamos la nueva Carpeta..., por supuesto, la vieja ha desaparecido...
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.