Leer archivo TXT y validar Campo + Ruta Computador

Necesito saber el como puedo hacer que dadas una condiciones realizar un script o macro para que este me realice unos cambios en una información de un archivo txt.

En la imagen adjunta están los posibles escenarios.

1. Siempre quiero ir al campo 6 (Se determina campo por cada coma del archivo) e ir a validar si este esta diligenciado o no.

Si no esta diligenciado hay que ponerle un guion ( - )
Si este esta diligenciado pero no tiene guion dentro del contenido del campo 6, hay que ponerlo.
Si el guion se encuentra diligenciado en cualquier parte del contenido del campo 6 no modificar.

Como son muchos los archivos que toca realizar este proceso, lo ideal seria no hacerlo uno por uno sino que este lea los archivos txt (Todos con la misma estructura) de una ruta del computador y dar ejecutar para realizar este proceso.

Agradezco mucho su colaboración.

Respuesta
1

Prueba la siguiente macro.

Pon los archivos txt en una carpeta.

Los archivos modificados quedarán en otra carpeta.

Cambia en el nombre de las carpetas en estas líneas:

  sPathIn = "C:\trabajo\Folder1\"     'Ruta con archivos origen
  sPathOu = "C:\trabajo\Folder2\"     'Ruta con archivos de salida

La macro revisa todos los archivos y todas las líneas de cada archivo:

Sub Lee_txt_modifica_guarda_txt()
  Dim sPathIn As String, sPathOu As String, txt As String, cad As String
  Dim sLine As Variant, sItems As Variant, arch As Variant, i As Long
  '
  sPathIn = "C:\trabajo\Folder1\"     'Ruta con archivos origen
  sPathOu = "C:\trabajo\Folder2\"     'Ruta con archivos de salida
  arch = Dir(sPathIn & "*.txt")
  '
  Do While arch <> ""
    Open sPathIn & arch For Input As #1
    Open sPathOu & arch For Output As #2
    Do While Not EOF(1)
      Line Input #1, sLine
      cad = ""
      sItems = Split(sLine, ",")
      For i = 0 To UBound(sItems)
        txt = sItems(i)
        If i = 6 Then If InStr(1, txt, "-") = 0 Then txt = txt & "-"
        cad = cad & txt & ","
      Next
      Print #2, Left(cad, Len(cad) - 1)
    Loop
    Close #1, #2
    arch = Dir()
  Loop
  MsgBox "Fin"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas