Saltar al contenido

Recommended Posts

publicado (editado)

Hola a todos! Quisiera me ayudaran por favor con la ejecución de una macro . Me funciona perfecta pero necesito saber como hago para que solo me guarde la hoja que necesito, en si, la hoja 10 pero me guarda los nuevos libros con todas las hojas.

 

Sub control2558()

Application.ScreenUpdating = False

Dim I As Integer

I = 4

While Hoja10.Cells(I, 102) <> ""
    Hoja10.Cells(6, 82) = Hoja10.Cells(I, 102)
        Hoja10.Select
        
            Dim NombreArchivo, RutaArchivo As String
            
            NombreArchivo = "Hoja Control " & Hoja10.Cells(I, 102)
            RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm"
            
            ActiveWorkbook.SaveAs Filename:=RutaArchivo
                                    
            Hoja10.Select
'            ActiveSheet.PrintOut Copies:=1, Collate:=False

I = I + 1

Wend

MsgBox ("Proceso generado con éxito")

Application.ScreenUpdating = True


End Sub

 

Así muestra el Visual Basic el modulo: 

image.png.1415783b1b91d35204817d49a5ba02d3.png

 

Gracias :)

Editado el por linacg96
publicado

Sin libro de ejemplo y si es que lo entendí bien podría recomendar aplicar a tu macro los siguientes cambios:

  1. Set NuevoLibro = Workbooks.Add: Este comando crea un nuevo libro de Excel y lo asigna a la variable NuevoLibro.
  2. Hoja10.Copy Before:=NuevoLibro.Sheets(1): Este comando copia la Hoja10 al nuevo libro que se acaba de crear. La hoja se coloca antes de la primera hoja del nuevo libro.
  3. NuevoLibro.SaveAs Filename:=RutaArchivo: Este comando guarda el nuevo libro (que ahora tiene solo la Hoja10) en la ubicación especificada por RutaArchivo.
  4. NuevoLibro.Close SaveChanges:=False: Este comando cierra el nuevo libro. El argumento SaveChanges:=False significa que no se guardarán los cambios si se realizan cambios adicionales al libro después de guardar y antes de cerrar.

Debe quedarte algo así:

Sub control2558()

Application.ScreenUpdating = False

Dim I As Integer

I = 4

While Hoja10.Cells(I, 102) <> ""
    Hoja10.Cells(6, 82) = Hoja10.Cells(I, 102)
        
    Dim NombreArchivo, RutaArchivo As String
    
    NombreArchivo = "Hoja Control " & Hoja10.Cells(I, 102)
    RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm"
    
    Dim NuevoLibro As Workbook
    Set NuevoLibro = Workbooks.Add
    
    Hoja10.Copy Before:=NuevoLibro.Sheets(1)
    
    NuevoLibro.SaveAs Filename:=RutaArchivo
    
    NuevoLibro.Close SaveChanges:=False

    I = I + 1

Wend

MsgBox ("Proceso generado con éxito")

Application.ScreenUpdating = True

End Sub

Espero que te funcione como esperas.

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.