1. Esta comunidad utiliza cookies. Si continuas utilizando nuestra comunidad estás aceptando la utilización de nuestras cookies. Más información.
  2. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

[SOLUCIONADO] Crear carpetas y sub carpetas con datos de las columnas

Tema publicado en 'Macros y programación VBA' iniciado por linux4ever, 22 Dic 2009.

Estado del tema:
Cerrado para nuevas respuestas
  1. linux4ever

    linux4ever Nuevo Usuario

    Reg:
    21 Mar 2009
    Mensajes:
    12
    Me Gusta recibidos:
    0
    Buenas a todos.

    Hace ya varios días que estoy liado con una macro que a este ritmo va a acabar con mi paciencia. Os explico a ver si alguien me puede orientar: :confused:

    Tengo que hacer una Macro que coja los valores de las celdas y cree carpetas y subcarpetas dependiendo de la posición que ocupen las celdas, a ver si me explico mejor con el siguiente esquema

    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    La Carpeta1 tendría en su interior a Sub1 y Sub2

    La Sub1 tendría a Sub1.1 y Sub1.2 ...

    Y así sucesivamente hasta llegar al final de la hoja.
    La hoja tiene algo más de 4000 registros

    He intentado varias cosas, pero no consigo dar con la solución. He conseguido que cree las carpetas y las subcarpetas hasta el último nivel (la columna D) pero después no se como hacer para que busque la siguiente celda no vacía y vuelva a empezar el proceso en la celda que le corresponde. Aquí os dejo el código con el que he estado trabajando:

    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    No se si lo mejor sería hacer 4 funciones que se encargen de crear las carpetas e ir llamadolas al desplazarme por las celdas.


    Muchas gracias por adelantado.

    Un saludo
     

    Adjuntos:

    • planta.zip
      Tamaño de archivo:
      11,4 KB
      Visitas:
      166
    Última edición: 22 Dic 2009
  2. neverdelimon1

    neverdelimon1 Moderador Staff AyudaExcel

    Reg:
    25 Ago 2008
    Mensajes:
    894
    Me Gusta recibidos:
    76
    Respuesta: Crear carpetas y sub carpetas con datos de las columnas

    Hola

    Realiza un prueba con el siguiente codigo

    *Borra el contenido de tu Módulo1 y pega este codigo:

    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    Haz un prueba oprimiento tu boton Crear Carpetas y nos platicas como te fue

    saludos
     
  3. linux4ever

    linux4ever Nuevo Usuario

    Reg:
    21 Mar 2009
    Mensajes:
    12
    Me Gusta recibidos:
    0
    Respuesta: Crear carpetas y sub carpetas con datos de las columnas

    En pimer lugar quiero agradecerte tu ayuda. Me parece increible que hayan personas como tú que emplean su tiempo y sus conocimientos en ayudar a los demás de manera altruista.

    He probado el código y parece que funciona perfectamente. Sólo me queda probarlo en el archivo original.

    Ahora me surge otra duda, mi intención era colocar un enlace a cada una de las celdas con la URL de la carpeta que corresponde a cada una de ellas. ¿De qué forma puedo hacerlo? Antes lo tenía claro pero ahora con tu código no se donde ponerlo.


    Muchas gracias y un saludo
     
    Última edición: 23 Dic 2009
  4. neverdelimon1

    neverdelimon1 Moderador Staff AyudaExcel

    Reg:
    25 Ago 2008
    Mensajes:
    894
    Me Gusta recibidos:
    76
    Respuesta: Crear carpetas y sub carpetas con datos de las columnas

    Hola

    Me alegro te haya funcionado, para asignar los links (Hipervinculos), agrega al codigo lo resaltado de color azul.

    Saludos cordiales:
    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    Saludos cordiales
     
  5. linux4ever

    linux4ever Nuevo Usuario

    Reg:
    21 Mar 2009
    Mensajes:
    12
    Me Gusta recibidos:
    0
    Respuesta: Crear carpetas y sub carpetas con datos de las columnas

    Muchisimas gracias por tu ayuda.

    Funciona todo a la perfección.


    Un saludo y Felices Fiestas.
     
  6. MEME_

    MEME_ Nuevo Usuario

    Reg:
    10 Feb 2010
    Mensajes:
    13
    Me Gusta recibidos:
    0
    Re: Respuesta: Crear carpetas y sub carpetas con datos de las columnas

    --------------------------
    que onda banda esta es la primera vez que escribo
    haber si me pueden ayudar yo solo quiero un macro
    enque que cree una carpeta con cada nombre de la celda en la columna
    a1 y una subcarpeta para cada una de la b1..
    seria carpeta a1 subcarpeta b1,
    carpeta a2 subcarpeta b2
    y asi sucecibamente .
    les agradeceri mucho me pasaran un codigo
    eso hari muy rapido mi trabajo
    gracias
    suerte
     
  7. MEME_

    MEME_ Nuevo Usuario

    Reg:
    10 Feb 2010
    Mensajes:
    13
    Me Gusta recibidos:
    0
    otra cosa mi exceel es 2003
    gracias
     
  8. neverdelimon1

    neverdelimon1 Moderador Staff AyudaExcel

    Reg:
    25 Ago 2008
    Mensajes:
    894
    Me Gusta recibidos:
    76
    Hola MEME

    La anterior macro la podemos adaptar a tu necesidad, solo seria necesario que nos comentarás en cuál ruta se crearian o como señalarias en las celdas las rutas por ejemplo se me ocurre

    en la celda A1 colocarias C:\NombreCarpeta\CrearEstaCarpeta
    en la celda A2 CrearSubcarpeta

    En el entendido de que la subcarpeta de A2 esta dentro del directorio de A1

    En el primer caso seria necesario que ya existiera C:\NombreCarpeta, porque si no se provocaria un error, o solo que desearias que de una vez se crearan los dos subdirectorios.

    Seria bueno tener un ejemplo de como lo haces manualmente para si colocarlos desde la macro.

    saludos cordiales
     
  9. MEME_

    MEME_ Nuevo Usuario

    Reg:
    10 Feb 2010
    Mensajes:
    13
    Me Gusta recibidos:
    0
    buen primero que nada gracias por la ayuda, yo ya tengo un macro en la cual solo me crea las carpetas de la primer columna que seria de la A1 a la A20 y me las crea en la carpeta donde esta el archivo de excel, entonces lo que hago yo es borrar la lista de la A1 a la A20 y poner el contenido de la B1 a la B20 entonces ya que me crea esta nueva lista de carpetas yo manualmente lo que es muy tardado meto la carpeta b1 en la a1 la b2 en la a2 y asi sucesivamente, yo lo que te comentaba arriva era que si se podra que automaticamente cree una carpeta ya con su respectiva subcarpeta adentro para evitarme el trabajo ese que te comento.
    este es el codigo del macro que uso:
    Sub Crear_carpetas()
    'Ocultamos el procedimiento
    Application.ScreenUpdating = False
    'llamamos al objeto FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")
    'pasamos a una variable, la ruta donde se encuentra el
    'fichero de excel donde se está ejecutando este código
    ruta = ActiveWorkbook.Path
    'seleccionamos la primera celda que contiene
    'los nombres de las carpetas (suponemos que es A4)
    Range("A1").Select
    'recorremos toda la columna, hasta que encuentre una fila vacía, y
    'por cada fila con texto, crearemos una carpeta con el nombre
    'de ese mismo texto
    Do While Not IsEmpty(ActiveCell)
    'si el fichero no existe, entonces lo creamos
    If Not fso.FolderExists(ruta & "\" & ActiveCell.Value) Then
    fso.CreateFolder (ruta & "\-" & ActiveCell.Value)
    End If
    'pasamos a la fila siguiente, y volvemos a recorrer el bucle
    ActiveCell.Offset(1, 0).Select
    Loop
    'limpiamos el objeto
    Set fso = Nothing
    'Mostramos el procedimiento
    Application.ScreenUpdating = True
    End Sub
     
  10. neverdelimon1

    neverdelimon1 Moderador Staff AyudaExcel

    Reg:
    25 Ago 2008
    Mensajes:
    894
    Me Gusta recibidos:
    76
    Hola MEME


    Por lo que comentas la macro me parece funciona asi como lo deseas, sin hacerle ninguna modificación, descomprime el siguiente archivo y pruebalo, y nos comentas si te funciono.

    Pasos:

    1.- Descomprimes el archivo y lo guardas en la ruta donde deseas te cree las carpetas y subcarpetas (igual a tu anterior macro)
    2.- en la celda A1 colocas el nombre de la Carpeta1 y en celda B1 el Nombre de la Subcarpeta1, asi como en el ejemplo del archivo
    3.- Pulsas el boton crear carpetas


    (La macro permite crear hasta 4 nive les ' Carpeta, Subcarpeta1, Subcarpeta2 y Subcarpeta3')

    Saludos cordiales
     

    Adjuntos:

  11. MEME_

    MEME_ Nuevo Usuario

    Reg:
    10 Feb 2010
    Mensajes:
    13
    Me Gusta recibidos:
    0
    muchas pero muchas gracias me ha funcionado de maravilla, disculpa pero no se si me puedas ayudar con algo mas no se si se pueda crear un macro en el que te mueva los archivos a la carpeta que tiene su nombre, muchas gracias por lo demas gracias...
    cualquier cosa en la que te pueda ayudar solo pidemela
    gracias.
     
  12. MEME_

    MEME_ Nuevo Usuario

    Reg:
    10 Feb 2010
    Mensajes:
    13
    Me Gusta recibidos:
    0
    gracias muchas gracias, no se si me podrias ayudar con otra cosa, no se si sea posible hacer un macro en el que los archivos se metieran a la carpeta con su nombre, osea el el archivo word o imagin se metieran a la carpeta que tiene el mismo nombre que el archivo.
    como quiera muchas gracias me has ahorrado mucho tiempo de trabajo
    gracias
     
  13. Pedro_

    Pedro_ Usuario

    Reg:
    24 Ago 2009
    Mensajes:
    208
    Me Gusta recibidos:
    1
    Hola neverdelimon1, te cojo el archivo, es muy bueno.
    Creo que lo habre hecho bien, corrigeme si me equivoco, para que creen mas niveles, tan solo le he cambiado donde me ponen 4, por otra cantidad:

    Option Explicit
    Option Base 1
    Sub Botón1_AlHacerClic()
    Dim contador As Long, ruta As String, CarpetaProv As String, _
    ArrayUltsFilas(1 To 8), UltFil As Long, i As Long, _
    j As Byte, k As Byte

    'Determinamos nuestro rango para crear carpetas _
    tomando como base 8 niveles
    For i = 1 To 8
    ArrayUltsFilas(i) = Cells(Rows.Count, i).End(xlUp).Row
    Next i

    UltFil = Application.WorksheetFunction.Max(ArrayUltsFilas)

    Erase ArrayUltsFilas

    ruta = ActiveWorkbook.Path

    If VBA.Right(ruta, 1) <> Application.PathSeparator Then ruta = ruta & Application.PathSeparator

    For i = 1 To UltFil
    For j = 1 To 8
    Select Case j
    Case 1
    If Cells(i, j).Value <> "" Then
    CarpetaProv = ""
    ArrayUltsFilas(j) = ruta & Cells(i, j).Value & Application.PathSeparator
    CarpetaProv = ArrayUltsFilas(j)
    If CreaCarpeta(CarpetaProv) = True Then contador = contador + 1
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, j), Address:=CarpetaProv, ScreenTip:="Dar Click para seguir el vínculo a " & CarpetaProv
    End If
    Case 2 To 8
    If Cells(i, j).Value <> "" Then
    CarpetaProv = ""
    ArrayUltsFilas(j) = Cells(i, j).Value & Application.PathSeparator
    For k = 1 To j
    CarpetaProv = CarpetaProv & ArrayUltsFilas(k)
    Next k
    If CreaCarpeta(CarpetaProv) = True Then contador = contador + 1
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, j), Address:=CarpetaProv, ScreenTip:="Dar Click para seguir el vínculo a " & CarpetaProv
    End If
    End Select
    Next j
    Application.StatusBar = "Avance hasta el momento " & VBA.FormatPercent((i + 1) / UltFil, 0) & " se han creado " & contador & " carpeta(s) hasta ahora, presione Esc para cancelar..."
    Next i
    Application.StatusBar = False
    Erase ArrayUltsFilas
    MsgBox "Se crearon " & contador & " carpeta(s).", vbInformation
    End Sub
    Function CreaCarpeta(ByVal Ruta_y_Nombre_Carpeta As String) As Boolean
    'Crear carpeta
    Dim fs As Object
    If VBA.Right(Ruta_y_Nombre_Carpeta, 1) = Application.PathSeparator Then Ruta_y_Nombre_Carpeta = VBA.Left(Ruta_y_Nombre_Carpeta, VBA.Len(Ruta_y_Nombre_Carpeta) - 1)
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.FolderExists(Ruta_y_Nombre_Carpeta) = True Then
    CreaCarpeta = False
    Else
    fs.CreateFolder (Ruta_y_Nombre_Carpeta)
    CreaCarpeta = True
    End If
    On Error Resume Next
    Set fs = Nothing
    End Function
    Sub QuitarHipervinculos()
    Dim vinculo

    For Each vinculo In ActiveSheet.Hyperlinks
    vinculo.Delete
    Next vinculo

    End Sub


    Saludos
     
  14. neverdelimon1

    neverdelimon1 Moderador Staff AyudaExcel

    Reg:
    25 Ago 2008
    Mensajes:
    894
    Me Gusta recibidos:
    76
    Hola

    MEME

    Creo que si podria realizar la macro que comentas, solo que seria necesario un ejemplo para determinar a qué directorio se moveria cada archivo y si todos los achivos estan en el mismo directrio, o si los nombres tienen alguna lógica para de ahi moverlos hacia determinado directorio. (por lo pronto creo que el mismo explorador de Windows tiene la vesatilidad de que puedes abrir multiples ventanas y simplemente arrastrar de un direrctorio a otro)

    PEDRO.

    Excelente la modificación que le hiciste a la macro


    saludos cordiales
     
  15. MEME_

    MEME_ Nuevo Usuario

    Reg:
    10 Feb 2010
    Mensajes:
    13
    Me Gusta recibidos:
    0
    si osea se podria hacer moviendo los archivos a la carpeta que tiene el mismo nombre que el archivo, todos ellos que esten en el mismo lugar que el documento de excel que ejecuta la macro, no se si me explico
    seria por ejemplo un archivo de word o cualquier tipo de archivo esta en mis documentos con el nombre de uno y su carpeta esta en mismo lugar con el mismo nombre de uno lo que seria poner ahi mismo el archivo de excel que ejecuta la macro y ya solo haga su trabajo. como tu me comentas es como lo hago arrastro el archivo hacia la carpeta, pero el macro que me hiciste de crear carpetas es por lo mismo que son muchos archivo y muchas carpetas que hay que acomodar lo cual toma mucho tiempo en ubicar el nombre del archivo en la carpeta y luego meterlo
    de antemano gracias ya con lo que me ayudaste me has ahorrado mucho trabajo
     
  16. Rayearth

    Rayearth Nuevo Usuario

    Reg:
    1 Jul 2010
    Mensajes:
    2
    Me Gusta recibidos:
    0
    Crear carpetas y sub carpetas, archivos con datos de las columnas

    Hola neverdelimon1:

    tengo un problema casi similar al de este post, mira yo tengo que crear carpetas y subcarpetas y archivos de 0kb como de referencia. te pongo la grafica
    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    Como puedes ver la carpeta principal es "JNJ102206" pero dentro de otra Carpeta "JNJ" el archivo de 0KB es "CEN5211" y tiene que crear la carpeta "CHS" y dentro de esta misma otra capeta adicionales como File, PRE, Final.

    Eso para JNJ, pero tambien tengo "PG, PGE, etc." los cuales tambien siguen el mismo procedimiento:

    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    la diferencia de las Subcapetas estan en los nombres.... y en la posicion de de cada columna, es decir D siempre sera CHS, en F sera JAP y asi sucesivamente...

    Ahora, lo que deseo es que vaya de columna en columna hasta el limite que se indique (digamos B:23) y despues salte a la siguiente fila hast que encuentre una fila vacia.
    Y que la macro cree las carpetas desde la posicion enque esta.

    Las carpetas se crean en una unidad de red.

    Estare muy agradecido por tu ayuda.
     
    Última edición: 1 Jul 2010
  17. neverdelimon1

    neverdelimon1 Moderador Staff AyudaExcel

    Reg:
    25 Ago 2008
    Mensajes:
    894
    Me Gusta recibidos:
    76
    Hola Rayearth

    Bienvenido al foro.

    Claro que si podemos hacer la macro que comentas, solo que necesito que por favor me guies un poquito mas, porque ahora que lei me dio la impresion de que estaba leyendo 'todo en claves' quizas sea que hoy no ameneci de mente muy activa jejejeje, por favor ayudame con lo siguiente:

    Que tipo de archivos serian los de 0kb (excel o texto?)

    Alcanzo a notar que son prefijos, me seria un poco mas claro para mi si me lo colocas asi por ejemplo C:\...\JNJ102206\JNJ (la ruta c solo es para ejemplificar ya que podria ser relativa), me comentas que tiene que crear File, PRE, Final (aqui no me queda claro si son prefijos que se añaden a archivos o en que consiste?). El archivo CEN5211 23-Jun, se crearia sin la fecha o la fecha esta en otra columna?

    Te recomiendo subas un archivos de Excel (comprimido) puede ser con datos ficticios solo que conserve la estructura, y por favor me guies lo mas explicito posible, ya se que dicen que una imagen vale mas que mil palabras pero bueno almenos en mi caso aqui si necesito el archivo de excel y las mil palabras.

    Saludos cordiales
     
    Última edición: 1 Jul 2010
  18. Rayearth

    Rayearth Nuevo Usuario

    Reg:
    1 Jul 2010
    Mensajes:
    2
    Me Gusta recibidos:
    0
    Muchas gracias por la bienvenida... :D
    Ver archivo adjunto HELP EXCEL MACRO.zip

    mira yo creo loas archivos de 0 Kb de la siguiente manera: (en el explorer)
    Click derecho, NUEVO/Documento de texto...
    Luego RENOMBRO con el Nro de CASE (Ver excel) y sin extension (en este caso sin .txt)

    El excel tiene algo sencillo no te puedo copiar toda la data por que seria muy pesado.
    y para que entiendas un poco la codificación del excel a la creación de las carpetas. en CHS (excel) seria en Explorer "zh-cn"; MX = "es-mx" y BP o Portuguese="pt-br" como puedes ver en la imagen.
    y puedes ver las subcarpetas que se tienen que crear dentro de cada uno de los IDIOMAS.
    Ahora son varios grupos de PROYECTOS (PG, JNJ, PG, PGE, PGW, etc) y tampoco son los únicos idiomas tengo en lista con 16 y tan solo he puesto 7 columnas (el problema es que se me aumento el trabajo) :(
    Ahora necesito crear otra hoja de excel basado en este pero con mas datos pero includio mas la macro de "creacion de Carpetas"
    Espero que te haya podido dar mas claro lo que necesito.
    y de ante mano muchas gracias.
     
Estado del tema:
Cerrado para nuevas respuestas

Compartir esta página