18 votos

¿Cómo se puede "dividir" un Excel (.xlsx) archivo que contiene varias hojas en una hoja aparte[n].xlsx?

Creo que el título lo dice todo para esta pregunta, pero a elaborar un poco más:

Tengo un .xlsx archivo que contiene una docena de hojas. Quiero dar salida a todas esas hojas separadas .archivos xlsx. Automatizado de nombres de ellos no es necesario. Excel tiene una función para exportar hojas de un archivo aparte?

17voto

Peter Albert Puntos 2070

No es una característica integrada.

Sin embargo, si ejecuta este código, se debe hacer el trabajo.

Sub SaveSheets()
    Dim strPath As String
    Dim ws As Worksheet

    Application.ScreenUpdating = False

    strPath = ActiveWorkbook.Path & "\"
    For Each ws In ThisWorkbook.Sheets
        ws.Copy
        'Use this line if you want to break any links:
        BreakLinks Workbooks(Workbooks.Count)
        Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx"
    Next

    Application.ScreenUpdating = True
End Sub

Sub BreakLinks(wb As Workbook)
    Dim lnk As Variant
    For Each lnk In wb.LinkSources(xlExcelLinks)
        wb.BreakLink lnk, xlLinkTypeExcelLinks
    Next
End Sub

Para ejecutar el código, haga lo siguiente:

  1. Abrir el editor de VBA (Alt+F11)
  2. En el árbol en la esquina superior izquierda, haga clic derecho sobre el libro e inserte un nuevo módulo
  3. Copia el código anterior en este módulo
  4. Cierre el editor de VBA
  5. En Excel presione Alt+F8 para ejecutar macros y seleccione SaveSheets

o consulte ¿Cómo puedo añadir VBA en MS Office?

12voto

OGP Puntos 101
  1. Cuando haga clic en la pestaña de una hoja de Excel, puede seleccionar Mover o Copiar...

    enter image description here

  2. En el cuadro de diálogo resultante, puede seleccionar un destino de la libreta de trabajo. Seleccione (nuevo libro).

    enter image description here

  3. Haga clic en ACEPTAR. Su hoja es ahora dentro de un nuevo documento.

11voto

Jay Puntos 191

Traté de Pedro Alberto de la solución y no trabajo para mí, así que he encontrado una solución en este post ("Excel – guardar hojas de cálculo como archivos independientes") en el Diario de un geek de la computadora.

Funciona a la perfección. Usted debe cambiar el nombre de las hojas que contienen los puntos para obtener el nombre correctamente los archivos con .xls extensiones.

Sub CreateNewWBS()
Dim wbThis As Workbook
Dim wbNew As Workbook
Dim ws As Worksheet
Dim strFilename As String

    Set wbThis = ThisWorkbook
    For Each ws In wbThis.Worksheets
        strFilename = wbThis.Path & "/" & ws.Name
        ws.Copy
        Set wbNew = ActiveWorkbook
        wbNew.SaveAs strFilename
        wbNew.Close
    Next ws
End Sub

Instrucciones de uso para crear y ejecutar esta macro de Peter Albert post o de ¿Cómo puedo añadir VBA en MS Office?

0voto

gethowstuff Puntos 21

Simple macro VBA de Excel que crea un archivo CSV (con el nombre de la hoja) para cada hoja del libro.

http://gethowstuff.com/vba-macro-save-each-sheet-workbook-to-seperate-csv-files/

Sub saveSheetsSeperateCSV()
    Dim sheetsCount
    sheetsCount = 1
    Dim activeSheetName
    Do
        If ActiveSheet.Index = Worksheets.Count Then
            Worksheets(1).Select
        Else
            ActiveSheet.Next.Select
        End If
        activeSheetName = ActiveSheet.Name
        ActiveWorkbook.SaveAs Filename:="C:\test\" & activeSheetName & ".csv", _
                                FileFormat:=xlCSV, CreateBackup:=False
        sheetsCount = sheetsCount + 1
    Loop Until sheetsCount > Worksheets.Count
End Sub

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: