** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Visual Basic Clásico (VB3...VB6)
  Mensajes nuevos Mensajes nuevos RSS - Unir dos ficheros TXT con un solo encabezado
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoUnir dos ficheros TXT con un solo encabezado

 Responder Responder
Autor
Mensaje Invertir el orden de clasificación
Medardo Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 03/Marzo/2005
Localización: Cuba
Estado: Sin conexión
Puntos: 1987
Enlace directo a este mensaje Tema: Unir dos ficheros TXT con un solo encabezado
    Enviado: 02/Marzo/2016 a las 21:12
PERFECTO Luis.

Muchísimas gracias a Ud. y Jesús.

 

Por mi parte pueden cerrar el hilo.

Saludos
Desde La Habana, Cuba
Medardo
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10995
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 20:46
Pues método benedictino .....   LOL

En la ventana inmediato te haces un: 
? Contenido2
Con esto verás el contenido, miras lo que tiene la primera línea y cuentas el número de caracteres visibles,
acto seguido averiguas que caracteres hay justo a continuación con un ? Asc(mid$(Contenido, n, 1))

Así sabrás que caracter tienes que buscar ...


Editado:   primero prueba lo que te pone Luis, .....



Editado por Mihura - 02/Marzo/2016 a las 20:47
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton, NY
Estado: Sin conexión
Puntos: 3348
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 20:40
Buenas Medardo

Mira a ver si asi:

Sub combinaFichTexto()

    Dim FSO As New FileSystemObject
    Dim Archivo As File
    Dim Buffer As TextStream
    Dim Contenido1 As String
    Dim Contenido2 As String
    Dim Posicion As Integer
    
    'ABRIR EL PRIMER FICHERO Y EXTRAER CONTENIDO
    Set Archivo = FSO.GetFile("c:\temp\tabPrincipal1.TXT")
    Set Buffer = Archivo.OpenAsTextStream(ForReading)
    Contenido1 = Buffer.ReadAll

    'ABRIR EL SEGUNDO FICHERO Y EXTRAER CONTENIDO
    Set Archivo = FSO.GetFile("c:\temp\tabPrincipal2.TXT")
    Set Buffer = Archivo.OpenAsTextStream(ForReading)
    Contenido2 = Buffer.ReadAll
    Posicion = InStr(Contenido2, Chr(10)) ' Busca el salto de linea

    'GRABAR AMBOS CONTENIDOS EN EL FICHERO ‘tabPrincipal’
    Open "c:\temp\tabPrincipal.TXT" For Output As 1
    Print #1, Contenido1 & Right(Contenido2, Len(Contenido2) - Posicion)
    Close 1
    

End Sub

Un saludo.

Luis

PD:Sin acentos por tener teclado en ingles
Mens sana in corpore in sepulto
Arriba
Medardo Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 03/Marzo/2005
Localización: Cuba
Estado: Sin conexión
Puntos: 1987
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 20:32
Siguiendo la idea de Jesús, se puede resolver de la siguiente manera:

    Dim FSO As New FileSystemObject
    Dim Archivo As File
    Dim Buffer As TextStream
    Dim Contenido As String
    Dim Contenido2 As String

    'ABRIR EL PRIMER FICHERO Y EXTRAER CONTENIDO
    Set Archivo = FSO.GetFile(App.Path & "\tabPrincipal_prov.TXT")
    Set Buffer = Archivo.OpenAsTextStream(ForReading)
    Contenido = Buffer.ReadAll

    'ABRIR EL SEGUNDO FICHERO Y EXTRAER CONTENIDO
    Set Archivo = FSO.GetFile(App.Path & "\tabPrincipal.TXT")
    Set Buffer = Archivo.OpenAsTextStream(ForReading)
    Contenido2 = Buffer.ReadAll
    Contenido2 = Mid(Contenido2, 441)   'cantidad de caracteres (339) más 2 caracteres de retorno de carro y nueva línea
    Contenido = Contenido & Contenido2
   
    'GRABAR AMBOS CONTENIDOS EN EL FICHERO 'ARCHIVOFINAL'
    Open App.Path & "\ARCHIVOFINAL.TXT" For Output As 1
    Print #1, Contenido
    Close 1

PERO, ¿cómo averiguamos la cantidad de caracteres de esa primera línea?
Saludos
Desde La Habana, Cuba
Medardo
Arriba
Medardo Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 03/Marzo/2005
Localización: Cuba
Estado: Sin conexión
Puntos: 1987
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 19:30
Quizás leyendo cuántos caracteres hay en esa primera línea se podría precisar a partir de qué posición se desea extraer los datos. Estoy también en eso.

Saludos
Desde La Habana, Cuba
Medardo
Arriba
Medardo Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 03/Marzo/2005
Localización: Cuba
Estado: Sin conexión
Puntos: 1987
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 19:25
Da error de que no coinciden los tipos, supongo porque no debe permitir los caracteres de retorno en ese parámetro que es de tipo Long.
Saludos
Desde La Habana, Cuba
Medardo
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 997
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 19:06
 Prueba con Chr(13) & Chr(10) que seria el retorno de carro con el salto de linea
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10995
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 18:00
Supongo que la variable contenido contendrá algo así como:

ENCABEZADO FICHERO DOSRetornoCarro
Datos Linea 1RetornoCarro
Datos Linea 2RetornoCarro
.
.
Datos Ultima LineaRetornoCarro

Tendrás que eliminar lo que lleva la variable Contenido hasta el primer RetornoDeCarro, con un mid$(Contenido(instr(Contenido, Chr$(13))+1) tendría que valer ...

Escrito al vuelo, creo que el retorno de carro es el Chr$(13), aunque también podría ser el Chr$(10) ... que hace mucho que no lo uso.




Editado por Mihura - 02/Marzo/2016 a las 18:01
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Medardo Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 03/Marzo/2005
Localización: Cuba
Estado: Sin conexión
Puntos: 1987
Enlace directo a este mensaje Enviado: 02/Marzo/2016 a las 17:27
Hola
Tengo el siguiente procedimiento que toma el contenido de dos ficheros de texto y los une en un tercer fichero de texto:

    Dim FSO As New FileSystemObject
    Dim Archivo As File
    Dim Buffer As TextStream
    Dim Contenido As String
   
    'ABRIR EL PRIMER FICHERO Y EXTRAER CONTENIDO
    Set Archivo = FSO.GetFile(App.Path & "\tabPrincipal1.TXT")
    Set Buffer = Archivo.OpenAsTextStream(ForReading)
    Contenido = Buffer.ReadAll

    'ABRIR EL SEGUNDO FICHERO Y EXTRAER CONTENIDO
    Set Archivo = FSO.GetFile(App.Path & "\tabPrincipal2.TXT")
    Set Buffer = Archivo.OpenAsTextStream(ForReading)
    Contenido = Contenido & Buffer.ReadAll

    'GRABAR AMBOS CONTENIDOS EN EL FICHERO ‘tabPrincipal’
    Open App.Path & "\tabPrincipal.TXT" For Output As 1
    Print #1, Contenido
    Close 1

El procedimiento se realiza sin problema alguno. PERO, el encabezado del segundo fichero aparece en el intermedio al unirse el contenido de ambos ficheros.

Pregunto: ¿Cómo se puede impedir este segundo encabezado en el momento de la unión?

Saludos
Desde La Habana, Cuba
Medardo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable