Macro para mover las hojas activas a un libro nuevo

Les pido su ayuda para este problema:

Tengo una macro que cuando se ejecuta, deja ciertas hojas activas, hasta ahí todo bien, aquí necesito un código que me copie las hojas activas a un libro nuevo, que me pregunte donde deseo guardarlo y que cuando se guarde sea sin macros.

1 respuesta

Respuesta
1

Puedes poner la macro que te pone las hojas activas para tomar ese código y completarlo para guardar esas hojas en un libro nuevo.

¿Dime cómo quieres que se llame el nuevo libro?

Hola buena noche, le mando el código, de hecho como comentario, usted me ayudo con este código.

Private Sub CommandButton1_Click()
'Por.Dante Amor
Application.ScreenUpdating = False
Set h1 = ActiveSheet
For Each h In Sheets
If h.Name <> h1.Name Then
h.Visible = False
End If
Next
For Each c In Range("B4:B100")
On Error Resume Next
Sheets(c.Value).Visible = True
Next

For Each h In Sheets
If h.Visible Then cuenta = cuenta + 1
Next
[A1] = cuenta - 1

End Sub

Saludos Cordiales

Hoja activa y hoja visible son cosas diferentes.

¿Quieres qué se guarden las hojas visibles?

¿Todas las hojas se pasarán a un libro nuevo?

¿Dime cómo quieres que se llame el nuevo libro?

Hola, si solo necesito que en el libro nuevo se copien solo las hojas visibles y que se guarde con el nombre que esta en la Hoja 1, celda A5,  el cual sería "Distribución Foránea"

Saludos

H o l a:

Te anexo la macro

Sub CopiarHojas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '
    Set l1 = ThisWorkbook
    nombre = Sheets(1).[A5]
    If nombre = "" Then
        MsgBox "La celda A5 esta vacía, revisar.", vbCritical
        Exit Sub
    End If
    If IsDate(nombre) Then
        nombre = Format(nombre, "dd-mm-yyyy")
    End If
    una = True
    For Each h In Sheets
        If h.Visible = True Then
            If una Then
                una = False
                h.Copy
                Set l2 = ActiveWorkbook
            Else
                h.Copy After:=l2.Sheets(l2.Sheets.Count)
            End If
        End If
    Next
    '
    ruta = l1.Path & "\"
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Selecciona una carpeta"
        .AllowMultiSelect = False
        .InitialFileName = ruta
        If .Show <> -1 Then Exit Sub
        cp = .SelectedItems(1)
    End With
    '
    l2.SaveAs Filename:=cp & "\" & nombre & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    l2.Close
    '
    MsgBox "Hojas guardadas con el nombre: " & nombre, vbInformation, "COPIAR HOJAS"
End Sub

:)
S aludos.   D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s
;) 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas