Necesito una macro muy completa

Buen día

en mi trabajo cada semana necesito crear subcarpetas con diferentes nombres (L020 C.D.N LOMAS PERIODO 20) en carpetas existentes(L020 C.D.N LOMAS), luego que ya tienen los datos *.xlsx, *.pdf, *.xml necesito enviarlos TODOS JUNTOS por correo a 2 direcciones diferentes con asunto (PERIODO 20 L020) y poner todas esas subcarpetas en dos ubicaciones de red distintas y quisiera ver si me pudieran ayudar a crear una o varias tablas de vba con excel 2010 para cada caso de antemano gracias!!

1 Respuesta

Respuesta
1

Con gusto te ayudo con la macro o las macros.

Vamos a realizar el primer punto: "necesito crear subcarpetas con diferentes nombres"

Para este punto dime lo siguiente:

a) ¿De dónde obtengo el nombre de la carpeta existente?, ¿Está en una celda?

b) ¿De dónde obtengo los nombres de las subcarpetas a crearse?, ¿Todas van debajo de una misma carpeta? ¿O hay algunas subcarpetas debajo de una carpeta1 y otras subcarpetas debajo de otra carpeta2?

Espero tus comentarios en ese orden.


Cuando terminemos con el punto 1 pasamos a los siguientes puntos.

Punto 2 "luego que ya tienen los datos *.xlsx, *.pdf, *.xml"

Punto 3: "ecesito enviarlos TODOS JUNTOS por correo a 2 direcciones diferentes con asunto (PERIODO 20 L020)"

Punto 4: "y poner todas esas subcarpetas en dos ubicaciones de red distintas"

Punto 5: " y quisiera ver si me pudieran ayudar a crear una o varias tablas de vba con excel 2010 para cada caso de antemano

Hola dante

Gracias por tu interés!

La carpeta existente si esta en un listado de excel son 64 celdas con nombre que identifica a que tienda pertenece ejemplo:

L020 C.D.N LOMAS

L033 C.S.T PARAISO

L737 C.S.T GUAYMAS

Y las subcarpetas llevan el mismo nombre que su carpeta madre, lo cual tengo concatenado en otra hoja de excel, aunado a "PERIODO ##" el cual aumenta un dígito cada semana y cada una va con su cada cual:

L020 C.D.N LOMAS\L020 C.D.N LOMAS PERIODO 20

L033 C.S.T PARAISO\L033 C.S.T PARAÍSO PERIODO 20

L737 C.S.T GUAYMAS\L737 C.S.T GUAYMAS PERIODO 20

Espero con estos datos podamos seguir al siguiente paso, de nuevo gracias y a la espera de tu ayuda

Saludos, Franco

También me puedes decir cómo se llama la hoja donde están las carpetas "madre" y en qué columna.

Cómo se llama la hoja de las carpetas "hijas" y en qué columna.

Por último, en dónde están las carpetas "madre" en el disco c:?

Están en la raíz, así:

C:\L020 C.D.N LOMAS

C:\L033 C.S.T PARAISO

¿O están abajo de la carpeta en donde vas a tener el archivo con la macro?

Te anexo la macro para crear las subcarpetas:

Sub CrearSubcarpetas()
'Por.Dante Amor
    Columns("D").ClearContents
    ruta = ThisWorkbook.Path '"C:\trabajo\"
    Set h2 = Sheets("Hoja2")
    For i = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
        n = InStr(1, h2.Cells(i, "A"), "\")
        If n = 0 Then
            h2.Cells(i, "D") = "Carpeta no tiene la diagonal \"
        Else
            carp = Left(h2.Cells(i, "A"), n - 1)
            If carp = "" Then
                h2.Cells(i, "D") = "Archivo no tiene carpeta"
            Else
                If Dir(ruta & carp, vbDirectory) = "" Then
                    h2.Cells(i, "D") = "La carpeta no existe"
                Else
                    subcarp = Mid(h2.Cells(i, "A"), n)
                    If Dir(ruta & carp & subcarp, vbDirectory) = "" Then
                        MkDir ruta & carp & subcarp
                    End If
                    h2.Cells(i, "D") = "Carpeta creada"
                End If
            End If
        End If
    Next
    MsgBox "Creación de subcarpetas terminada"
End Sub

También te anexo mi archivo para que veas cómo tengo la información, en la hoja2 tengo las subcarpetas y el botón para ejecutar la macro. En la columna "D" te va a escribir el estatus de cada subcarpeta.

https://www.dropbox.com/s/401yt9vafez5gn1/crear%20subcarpetas.xlsm?dl=0 


Prueba la macro y avísame si es lo que necesitas.

Saludos. Dante Amor

Creo que vamos por buen camino, la macro la reviso en casa, ahora la hoja dónde están las madre se llama unidades columna d2 las hijas están a la derecha e2 en la misma hoja y la ruta es  c:\users\"user"\documents\facturación 

Así mismo tendría el libro para trabajar en casa en una usb con la misma carpeta "facturación"

A la espera de tus comentarios y de nuevo gracias!! 

¿Pero en la columna E tienes concatenada en la columna "E" a la madre y a la hija?

Deben estar concatenadas la madre y la hija, tal como lo habías comentado.

Revisa en la macro el correcto nombre de la carpeta, revisa nombres, espacios, acentos, debe estar exactamente igual.

"c:\users\user\documents\facturación\"

También revisa que la hoja se llame "unidades"

Sub CrearSubcarpetas()
'Por.Dante Amor
    Columns("F").ClearContents
    ruta = "c:\users\user\documents\facturación" 'ThisWorkbook.Path '"C:\trabajo\"
    Set h2 = Sheets("unidades")
    For i = 2 To h2.Range("E" & Rows.Count).End(xlUp).Row
        n = InStr(1, h2.Cells(i, "E"), "\")
        If n = 0 Then
            h2.Cells(i, "F") = "Carpeta no tiene la diagonal \"
        Else
            carp = Left(h2.Cells(i, "E"), n - 1)
            If carp = "" Then
                h2.Cells(i, "F") = "Archivo no tiene carpeta"
            Else
                If Dir(ruta & carp, vbDirectory) = "" Then
                    h2.Cells(i, "F") = "La carpeta no existe"
                Else
                    subcarp = Mid(h2.Cells(i, "E"), n)
                    If Dir(ruta & carp & subcarp, vbDirectory) = "" Then
                        MkDir ruta & carp & subcarp
                    End If
                    h2.Cells(i, "F") = "Carpeta creada"
                End If
            End If
        End If
    Next
    MsgBox "Creación de subcarpetas terminada"
End Sub

Buenos días Dante

Está bien este paso ya quedó y hace lo que necesito, ahora podrías hacer una tabla que copia y pega toda la carpeta y su contenido en una ubicación de red?  Que datos necesitamos?? 

Con gusto te sigo apoyando con todos los puntos.

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

Por favor, podrías valorar la respuesta y crear una nueva para cada una de las peticiones.

Saludos. Dante Amor

Perfecto, calificó todo lo que me envíes, que otra cosa necesitas??

Crea una nueva pregunta en el tema de excel.

Si lo deseas, al final del título de la nueva pregunta puedes poner que va dirigida a Dante Amor.

¡Gracias! 

Ya puse la nueva pregunta que dice comocopiar una carpeta de mis documentos a una unidad de red

Quedo a la espera de tus comentarios y especificaciones para continuar

Gracias de nuevo Dante

Saludos, Franco. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas