Excel - Dividir registros segun x cantidad y crear libros segun la cantidad de divisiones.

 
Vista:
Imágen de perfil de Miguel

Dividir registros segun x cantidad y crear libros segun la cantidad de divisiones.

Publicado por Miguel (14 intervenciones) el 04/04/2022 22:15:04
Buenas estimados!,

Tengo un problemita con una macro...
Contexto: Tengo un archivo con 255mil registros en una columna, los cuales quiero dividir en varios libros, la division será cada 3mil registros. Entonces cada vez que el conteo de filas llega a 3mil, se copian y pegan en un nuevo libro. Así hasta culminar, la macro que encontré hace lo que describí pero los pega en una nueva hoja, no libro.
Es para una carga a una base de datos, por eso necesito que sean libros y no hojas las divisiones.

Dejo el código y el archivo con los 255mil registros, no entiendo mucho de VBA por eso solicito la ayuda, gracias por su tiempo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub SplitData()
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
On Error Resume Next
xTitleId = "Configuración"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
SplitRow = Application.InputBox("Split Row Num", xTitleId, 5, Type:=1)
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (WorkRng.Rows.Count - xRow.Row + 1) < SplitRow Then resizeCount = WorkRng.Rows.Count - xRow.Row + 1
    xRow.Resize(resizeCount).Copy
    Application.Worksheets.Add after:=Application.Worksheets(Application.Worksheets.Count)
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Dividir registros segun x cantidad y crear libros segun la cantidad de divisiones.

Publicado por Antoni Masana (2477 intervenciones) el 06/04/2022 19:03:51
Añado unas pocas líneas de código pero ni esta completo nio finciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Sub SplitData()
    Dim WorkRng As Range
    Dim xRow As Range
    Dim SplitRow As Integer
    Dim xWs As Worksheet
 
    On Error Resume Next
 
    xTitleId = "Configuración"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
    SplitRow = Application.InputBox("Split Row Num", xTitleId, 5, Type:=1)
    Set xWs = WorkRng.Parent
    Set xRow = WorkRng.Rows(1)
 
    Application.ScreenUpdating = False
 
    For i = 1 To WorkRng.Rows.Count Step SplitRow
        resizeCount = SplitRow
        If (WorkRng.Rows.Count - xRow.Row + 1) < SplitRow Then resizeCount = WorkRng.Rows.Count - xRow.Row + 1
        xRow.Resize(resizeCount).Copy
 
        ' ---&--- Crea un nuevo libro
        Workbooks.Add
 
        ' ---&--- Debe copiar a la hoja del libro nuevo
        Application.Worksheets.Add after:=Application.Worksheets(Application.Worksheets.Count)
 
        Application.ActiveSheet.Range("A1").PasteSpecial
 
        ' ---&--- No sabemos como se llama el libro nuevo. Esto es necesario
 
        Windows("Libro2").Activate
 
         ' ---&--- Le damos nombre al guardar pero cada fichero debe tener un nombre diferente.
        ActiveWorkbook.SaveAs Filename:="C:\Tmp\Libro2.xlsx", _
                              FileFormat:=xlOpenXMLWorkbook, _
                              CreateBackup:=False
 
        ' ---&--- Cierra el libro nuevo
        ActiveWindow.Close
 
        Set xRow = xRow.Offset(SplitRow)
    Next
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Miguel

Dividir registros segun x cantidad y crear libros segun la cantidad de divisiones.

Publicado por Miguel (14 intervenciones) el 06/04/2022 20:23:00
Excelente estimado!, muchas gracias por la respuesta, a partir de eso puedo trabajar!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar