Macro para guardar en archivos separados hojas de un excel y subirlas a una nube o mandarlas por correo.

Dante quisiera saber si podías ayudarme con esta macro.

Tengo un archivo de excel que tiene aproximadamente 120 hojas y cada una de ellas necesito poder enviarlas individualmente a personas distintas para que carguen datos y las vuelvan a enviar y poder volver a cargarlas en el archivo general. El envió puede ser por correo electrónico o bien podría subirla a una nube (drive, dropbox, etc).
Necesito además que cada una de esas hojas se guarde con la combinación del contenido de varias celdas, para que el nombre haga referencia a quien corresponde enviarles (son las celdas C4, M4, R4 y W4). Podría también hacer referencia a una sola celda y yo antes armar esa celda con el contenido de las celdas en cuestión.

1 respuesta

Respuesta
1

H o l a:

Envíame un archivo con 3 hojas. También me envías 3 archivos, cada uno de estos 3 archivos será una de las hojas que me estás enviando en el primer archivo, esto con la finalidad de ver cómo quieres la hoja en un archivo. También los nombres de los 3 archivos deberán ser con la combinación de las celdas que necesitas.

Lo más práctico es que se guarden los archivos en una carpeta, dicha carpeta estará conectada, por ejemplo, a Dropbox, entonces cuando actives Dropbox, los archivos serán transferidos a la nube.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Lautaro Paz” y el título de esta pregunta.

Te acabo de enviar lo solicitado.

Muchas gracias. 

Te anexo la macro, cambia la ruta por el nombre de la carpeta que tienes conectada a la red.

Sub GenerarArchivos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.StatusBar = False
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    '
    ruta = "C:\trabajo\varios\"
    For Each h In l1.Sheets
        If h.Name <> h1.Name Then
            Application.StatusBar = "Copiando hoja: " & h.Index & " de " & l1.Sheets.Count
            h.Copy
            Set l2 = ActiveWorkbook
            Nombre = h.[M4] & h.[R4] & " " & h.[W4] & " " & h.[C4]
            l2.Sheets(1).Range("Z:AE").Delete
            l2.SaveAs ruta & Nombre & ".xlsx"
            l2.Close
        End If
    Next
    Application.StatusBar = False
    MsgBox "Archivos generados"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas