martes, 16 de enero de 2018

Split de archivo Excel

Hace poco tuve un problema en cargar un archivo Excel que estaba muy grande, había muchas soluciones pero la mas inmediata era fraccionar el archivo grande en archivos de Excel pequeños.  

Como siempre la intención es compartir la solución que a mas de alguien  puede servir, aunque en la web hay muchas soluciones.

Normalmente en Excel no viene habilitado la pestaña de "Programador", para el ejercicio estoy utilizando "Microsotf Office Professional Plus 2010", ubicamos la opciones de : "Archivo", "Opciones" y la opción de "Personalizar cinta de opciones"


Una vez habilitado creamos una función en este caso la llamaremos: SplitSheets()


Vamos a leer los datos de la hoja no.1 ( Sheets(1) ), generamos archivos pequeños de 5000 lineas. Para ello utilizamos la variable TotalLinea, veamos como queda el código.

Sub SplitSheets()

  Dim lLoop As Long, lCopy As Long
  Dim LastRow As Long
  Dim wbNew As Workbook
  Dim TotalLinea As Long
  
  TotalLinea = 4999
     
  With ThisWorkbook.Sheets(1)
         
    LastRow = .Range("A" & Rows.Count).End(xlUp).Row
    For lLoop = 2 To LastRow Step TotalLinea
      lCopy = lCopy + 1
      Set wbNew = Workbooks.Add
      .Range(.Cells(1, 1), .Cells(1, .Columns.Count)).EntireRow.Copy Destination:=wbNew.Sheets(1).Range("A1")
      .Range(.Cells(lLoop, 1), .Cells(lLoop + TotalLinea - 1, .Columns.Count)).EntireRow.Copy Destination:=wbNew.Sheets(1).Range("A2")
      Columns("D:D").Select
      Selection.ColumnWidth = 50
      Cells.Select
      Cells.EntireColumn.AutoFit
      Cells.EntireRow.AutoFit
      ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\CargaMasiva" & lCopy, FileFormat:=xlExcel8
      wbNew.Close
    Next lLoop
  
  End With
    
End Sub

Una vez creado la función, ponemos un botón en el Excel y enlazamos la función SplitSheets(), como se ve el ejemplo de la imagen.


Espero sea de utilidad!!

No hay comentarios.:

Publicar un comentario