Macro que me permita insertar una línea en un archivo .TXT

Dante buenos días: quiero solicitar su ayuda para una macro que me permita reccorrer un fichero de archivos .txt, abrir uno por uno para poder insertar una línea y volver a grabarlo.

2 respuestas

Respuesta
2

Reccorrer un fichero de archivos

Supongo que te refieres a una carpeta de archivos txt


Ayudaría si pones el detalle de la información:

  • Cómo se llama la carpeta
  • La línea se va a insertar al inicio o al final del archivo
  • De dónde se va a tomar dicha línea o qué datos van en esa línea

Puedes responder en ese orden.

Hola Dante muchas gracias por tomarse el tiempo de responder.

La carpeta se llama Entrada y tiene archivos de este tipo que copio abajo

Necesito que en la línea 9 de cada documento inserte un renglón que diga "PrefijoPOS |" y las 4 primeras letras del Numero de documento

Es decir en este caso tomaría las letras desde la posición 18 hasta la 21 del renglón que dice NumeroDocumento |FEKI5776, "FEKI" y quedaría así en la lienea 9 : PrefijoPOS |FEKI

Y que ponga los documentos en otra carpeta que se llama salida.

Dante muchas gracias por su ayuda.

<ENCABEZADO>

NumeroDocumento |FEKI5776

FechaEmision |2021-07-28
HoraEmision |10:24:52
TipoDocumento |1
TipoFactura |01
TipoOperacion |10
Nota |
TipoMoneda |COP
TerceroTipoEmpresa|1
TerceroNroDoc |222222222222
TerceroNroDocDV |1
TerceroIdenDoc |31
TerceroResponsabilidades|O-11
TerceroRegimen |49
TerceroRazonSocial|CONSUMIDOR FINAL
TerceroMunicipioCodigo|11001
TerceroCiudad |Bogotá
TerceroDepartamento|Bogotá
TerceroDepartamentoCodigo|11
TerceroDireccion |AUTOPISTA NORTE KM.17
TerceroPaisCodigo |CO
TerceroPais |Colombia
TerceroPaisLenguaje|es
TerceroContactoTelefono|
TerceroContactoCorreo|[email protected]
NetoLineas |13,800.00
TotalBaseImponible|13,800.00
TotalImpuestoIncluidos|13,800.00
Total |13,800.00
ImpuestoTotal_01 |0.00
ImpuestoTotal_04 |0.00
xMontoLetras |
xAlm |REFUGIO TENNIS
xCajero |BTCC
xVendedor |BTCC
xPropina |1,380.00
<PAGO>
PagoMetodo|PagoMedioCodigo|PagoFecha|PagoID
1|10|2021-07-28|
<IMPUESTO O RETENCION>
ImpRetTipo|ImpRetCodigo|ImpRetNombre|ImpRetTasa|ImpRetBase|ImpRetValor
IMPUESTO|04|INC|0.00|13,800.00|0.00
<DETALLE>
ItemLinea|ItemCantidad|ItemUM|ItemPrecioVentaUnit|ItemPrecioCantidadReal|ItemPrecioUM|ItemDescripcion|ItemVendedorCodigo|ItemValorVenta|ItemDescRecIndicador|ItemDescRecRazon|ItemDescRecPorcentaje|ItemDescRecMonto|ItemDescRecBase
1|1|94|5,400.00|1|94|HUEVOS AL GUSTO| |5,400.00| | | | |
2|1|94|5,600.00|1|94|JUGO DE NARANJA| |5,600.00| | | | |
3|1|94|2,800.00|1|94|BRITT CAPUCHINO| |2,800.00| | | | |
<IMP O RET LINEAS>
ImpRetDetLinea|ImpRetDetTipo|ImpRetDetCodigo|ImpRetDetNombre|ImpRetDetTasa|ImpRetDetBase|ImpRetDetValor
1|IMPUESTO|04|INC|0.00|5,400.00|0.00
2|IMPUESTO|04|INC|0.00|5,600.00|0.00
3|IMPUESTO|04|INC|0.00|2,800.00|0.00

Prueba lo siguiente:

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
  Dim i As Long, n As Long
  Dim letras As String
  '
  sPathIn = "C:\Entrada\"     'Ruta con archivos origen
  sPathOu = "C:\\Salida\"     '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
    n = 0
    Do While Not EOF(1)
      n = n + 1
      Line Input #1, sLine
      If LCase(Left(sLine, 15)) = LCase("NumeroDocumento") Then
        letras = Mid(sLine, 18, 4)
      End If
      If n = 9 Then
        Print #2, "PrefijoPOS |" & letras
      End If
      Print #2, sLine
    Loop
    Close #1, #2
    arch = Dir()
  Loop
  MsgBox "Fin"
End Sub
Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas