Dividir 1 archivo en formato CSV en varios archivos CSV

Resuelto

Hola,

Quiero dividir 1 archivo de varias líneas (30 000, por ejemplo) en varios archivos de 300 líneas más o menos.

(archivo en formato csv)

En VBA, si es posible: (un ejemplo de lo que deseo)

por favor, seleccione el archivo a dividir.

¿Cuántas líneas desea por archivo?

Una vez respondidas las 2 preguntas, la división debe hacerse manteniendo el formato en cada columna (por ejemplo columna A = formato Texto).....

La primera fila (encabezado de columna) será la misma para todos los archivos.

¡Gracias de antemano por su ayuda! No he encontrado una solución en la red.....

Salud


6 respuestas

  1. Hola,

    Entonces cada recorte se guarda como un nuevo archivo cvs.... ¿Sí / No?

    Gracias por proporcionar al menos 5 a 10 líneas del archivo para dividir!

    Para adjuntar el archivo vía https://www.cjoint.com/

     seguir las instrucciones y pegar el enlace en una nueva publicación.


    Saludos.
    Le Pingou

    1
    1. Hola Le Pingou,

      Sí, para cada corte se desea un nombre diferente

      Para example, el archivo a dividir se llama MTT.csv

      El resultado será:

      MTT01.CSV

      MTT02.CSV

      MTT03.CSV .......etc

      https://www.cjoint.com/c/LIfo2GzKsdV

      Saludos

      0
  2. Moderador

    Hola,

    7zip permite dividir un archivo, en 7zip, en la lista de archivos, clic derecho dividir en, según el tamaño, no sé si respeta los saltos de línea.

    O un pequeño batch línea de comando: https://www.developpez.net/forums/d1502877/general-developpement/programmation-systeme/windows/scripts-batch/diviser-fichier-texte-sous-windows/#post8153273
    fácilmente adaptable para crear una primera fila con los títulos de las columnas.


    1
    1. Hola, pee,

      Al hacer clic derecho en 7zip, no encontré la opción para dividir en ...

      Para la segunda solución, creé un .bat sin éxito...

      ¡Gracias de todos modos!

      Saludos

      0
  3. Moderador

    El script funciona, solo tenía un error de contador de línea en el 1 archivo

    @echo off setLocal EnableDelayedExpansion set limit=10000 set file=splitA.txt set lineCounter=1 set filenameCounter=1 set name= set extension= for %%a in (%file%) do ( set "name=%%~na" set "extension=%%~xa" ) set splitFile=!name!!filenameCounter!!extension! for /f "tokens=*" %%a in (%file%) do ( if !lineCounter! geq !limit! ( set /a filenameCounter=!filenameCounter! + 1 set splitFile=!name!!filenameCounter!!extension! echo Nouveau fichier !splitFile! set lineCounter=0 ) echo %%a>> !splitFile! set /a lineCounter=!lineCounter! + 1 ) pause

    sinon il faudrait nous donner un fichier exemple.

    Pour 7zip, il faut lancer 7zip d'abord, et dans 7zip, parcourir les fichiers + clic-droit.


    1
    1. Moderador

      Duplicando el primer registro que contiene el nombre de las columnas en cada archivo

      @echo off
      setLocal EnableDelayedExpansion
      set limit=2
      set file=splitcsv.csv
      set lineCounter=0
      set filenameCounter=1
      set name=
      set extension=
      for %%a in (%file%) do (
        set "name=%%~na"
        set "extension=%%~xa"
      )
      set col=
      set splitFile=!name!!filenameCounter!!extension!
      for /f "tokens=*" %%a in (%file%) do (
        if "!col!" == "" (
          set col=%%a
        )
        if !lineCounter! gtr !limit! (
          set /a filenameCounter=!filenameCounter! + 1
          set splitFile=!name!!filenameCounter!!extension!
          echo !col! > !splitFile!
          echo Nouveau fichier !splitFile!
          set lineCounter=1
        )
        echo %%a>>!splitFile!
        set /a lineCounter=!lineCounter! + 1
      )
      pause

      1
      1. Hola,

        Bueno, no voy a encontrar algo mejor, dejo el puesto.


        Saludos.
        El Pingüino

        0
        1. Hola,

          Gracias, pee pee, por esta solución (*.bat) que funciona muy bien!

          Y gracias a Le Pingou por tu participación!

          ¡Que tengas un buen día!

          0