Excel - Cómo dividir un archivo de excel en múltiples archivos txt

 
Vista:

Cómo dividir un archivo de excel en múltiples archivos txt

Publicado por Catalina (1 intervención) el 22/04/2023 06:04:42
Buen día;

He intentado generar una macro que me permita dividir un archivo en Excel cada 5000 filas y convertirlas en archivos txt, pero no ha sido posible, alguna orientacion correcccion??

Sub Test()

'declarar variables
Dim wb As Workbook
Dim Obj As FileSystemObject
Dim Tx As Scripting.TextStream
Dim ThisSheet As Worksheet
Dim NumOfColumns As Integer
Dim RangeToCopy As Range
Dim RangeOfHeader As Range
Dim RowsInFile As Integer
Dim Rutarchivo As String

Rutarchivo = ThisWorkbook.Path & "\ODT_CREAR_SELLOS_AZULES_" & WorkbookCounter & ".txt"


Application.ScreenUpdating = False
Set ThisSheet = ThisWorkbook.ActiveSheet
Set Obj = New FileSystemObject
Set Tx = Obj.CreateTextFile(Rutarchivo)
NumOfColumns = ThisSheet.UsedRange.Columns.Count
WorkbookCounter = 1


RowsInFile = 5001
Set RangeOfHeader = ThisSheet.Range(ThisSheet.Cells(1, 1), ThisSheet.Cells(1, NumOfColumns))

For p = 2 To ThisSheet.UsedRange.Rows.Count Step RowsInFile - 1


Set wb = Workbooks.Add
RangeOfHeader.Copy wb.Sheets(1).Range("A1")
Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 2, NumOfColumns))
RangeToCopy.Copy wb.Sheets(1).Range("A2")


'Guardar el nuevo archivo
wb.SaveAs ThisWorkbook.Path & "\ODT_CREAR_SELLOS_AZULES_" & WorkbookCounter & ".txt"
wb.Close


WorkbookCounter = WorkbookCounter + 1
Next p

Application.ScreenUpdating = True
Set wb = Nothing
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

Cómo dividir un archivo de excel en múltiples archivos txt

Publicado por Antoni Masana (2478 intervenciones) el 22/04/2023 15:27:03
No se que se supone que hace esta macro pero de lo que estoy seguro es lo que no hace "dividir un archivo en Excel cada 5000 filas y convertirlas en archivos txt"

Hay varias formas de abrir / crear un archivo plano de texto y varias formas de escribir en el.
Yo utilizo la clásica por que es la que mejor me conozco.

El código sería algo así:

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
Sub Test()
    Dim Fila As Long, Grabar As Integer, Numero As Integer, _
        Direc As String, Archi As String
 
    Direc = ThisWorkbook.Path
    Archi = "\ODT_CREAR_SELLOS_AZULES_"
 
    With Sheet("Hoja de Datos")  ' <--- Aqui se indica la hoja de los datos
        Numero = 0
        Grabar = 5000
        Fila = 2
        While .Cells(Fila, "A") <> ""
            If Grabar = 5000 Then
                Close #1
                Numero = Numero + 1
                Open Direc & Archi & Format(Numero, "000") & ".txt" For Output As #1
                Grabar = 0
            End If
 
            Print #1, Cells(Fila, "A") & ";";
            Print #1, Cells(Fila, "B") & ";";
            Print #1, Cells(Fila, "C") & ";";
            Print #1, Cells(Fila, "D")
            Grabar = Grabar + 1
            Fila = Fila + 1
        Wend
    End With
    Close #1
End Sub

No lo he probado y puede que tenga algún error de escritura.
Lo que escribe en el fichero de texto no se como queda porque tampoco se lo que escribe ni como lo ha de escribir.

Saludos.
\\//_
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