Generar automáticamente nombre archivo xlsx con datos de las hojas de trabajo

Para Dante Amor, se requiere generar por cada hoja de trabajo un archivo xlsx. El nombre de la hoja debe hacer parte del nombre del archivo xlsx generado.

                                A                               B                                   C                                      D

1                             10                             20                               50                                       80

2                            .......

3

4

5

Hoja1 hoja2 hoja3 hoja4 hoja5... HojaN

Generar automáticamente:

10hoja1.xlsx, donde 10 es el valor de la celda A1 y así para cada hoja

1 respuesta

Respuesta
2

Te anexo la macro actualizada

Sub Generar_Archivos()
'---
'   Por.Dante Amor
'---
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '
    Set h1 = Sheets("TUC")
    Set h2 = Sheets("Liquidacion")
    '
    ruta = ThisWorkbook.Path & "\"
    For Each h In Sheets
        Select Case LCase(h.Name)
            Case LCase(h1.Name), LCase(h2.Name)
            Case Else
                h1.Cells.Replace What:="Hoja1", Replacement:=h.Name, LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
                h2.Cells.Replace What:="Hoja1", Replacement:=h.Name, LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
                nombre1 = h1.Name & "-" & h.Name & "-" & h1.[B7].Value
                nombre2 = h2.Name & "-" & h.Name & "-" & h1.[B7].Value
                h1.Copy
                Set l2 = ActiveWorkbook
                Set h3 = l2.Sheets(1)
                h3.Cells.Copy
                h3.[A1].PasteSpecial xlValues
                l2.SaveAs Filename:=ruta & nombre1 & ".xlsx", _
                    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                l2.Close False
                '
                h2.Copy
                Set l2 = ActiveWorkbook
                Set h3 = l2.Sheets(1)
                h3.Cells.Copy
                h3.[A1].PasteSpecial xlValues
                l2.SaveAs Filename:=ruta & nombre2 & ".xlsx", _
                    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                l2.Close False
                '
                h1.Cells.Replace What:=h.Name, Replacement:="Hoja1", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
                h2.Cells.Replace What:=h.Name, Replacement:="Hoja1", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
        End Select
    Next
    MsgBox "Archivos creados"
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas