Macro TXT a excel en una columna

Hace tiempo publicaste una macro donde importaba el contenido de un txt a un excel y funciona muy bien, pero quería ver si me apoyas en un modificación, ya que cada vez que ejecutabas la macro te copiaba de nuevo todo el contenido en la ultima celda, lo que yo quiero es que como mi txt va estar actualizándose, cada vez que ejecute la macro se actualice mi excel con la información del txt.

Esta es la Macro

Sub abrirtxt()

Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Set l1 = ThisWorkbook
Set h1 = l1.Sheets(1)
ruta = l1.Path & "\"
ChDir ruta
archi = Dir("*.txt")
Do While archi <> ""
Workbooks.OpenText Filename:=archi, Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, _
Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
If Err.Number = 0 Then
Set l2 = ActiveWorkbook
Set h2 = l2.Sheets(1)
h2.Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Copy _
h1.Range("A" & h1.Range("A" & Rows.Count).End(xlUp).Row + 1)
l2.Close False
End If
Err.Number = 0
archi = Dir()
Loop
End Sub

Respuesta
1

H o l a:

Lo que hace la macro es copiar el contenido del txt después de la última fila con datos.

¿Lo qué tu quieres es copiar el contendido del txt pero en dónde? En cuál hoja, ¿a partir de cuál fila? ¿A partir de cuál columna? Podrías especificarlo con detalle.

Gracias por tu respuesta, lo que busco es copiar el contenido del txt en una hoja de excel (desde donde se ejecute la Macro) a partir de la celda A2 hacia abajo,  el txt estará creciendo en datos por lo que busco que cada vez que se ejecute la macro solo copie  el contenido nuevo del txt y lo pegue a partir del ultimo registro en excel  y no mueva el contenido ya copiado, espero haberme explicado mejor y me puedas apoyar

Otra solución que eh buscado y no encuentro como tal, es que tengo una bascula con salida serial RS232 y la conecto con un convertidor a usb a una PC y logro tener conectividad, pero busco hacer una Macro en excel donde al correrla obtenga el peso de la bascula y la almacene en una hoja de excel, y cada vez que corra la macro vaya almacenando los pesos en lista. espero me puedas apoyar, Muchas gracias 

H o l a:

Con respecto a copiar el contenido del txt, sigo sin entender qué es lo que pretendes.

Suponiendo que iniciamos con el archivo txt1, el archivo txt1 tiene 3 registros; entonces se almacena en A2, en A3 y en A4.

Ahora vuelves a ejecutar la macro, quieres cargar el archivo txt2, el archivo txt2 tiene 2 registros.

Dudas:

Opción A) ¿Si quieres copiar los 2 registros en dónde los quieres?

Opción B) Si quieres solamente incluir los nuevos registros, cómo voy a saber, de los 2 registros del txt2, ¿cuál es nuevo y cuál ya está incluido en la hoja?

Sal u dos

P.D. En cuanto al peso de la báscula, creo que eso pertenece a otra pregunta.

ok iniciamos con el archivo txt1, el archivo txt1 tiene 3 registros; entonces se almacena en A2, en A3 y en A4.

ejecutamos de nuevo la macro,( NO existe un txt2), el mismo txt1(lo actualice)y ahora tiene los 3 registros anteriores mas otros 4 registros nuevos, en total 7 registros, los 3 primeros ya se almacenaron en A1, A2, A3, los 4 registros nuevos quiero que se almacenen en A5, A6, A7, A8.

txt1 lo actualizo de nuevo  y ahora tiene 7 registros ya almacenados anteriormente mas otros 2 nuevos, en total 9 registros.

eso 2 nuevos registros quiero que se almacenen en A9 y A10 y así cada vez que ejecute la macro.

Espero que con ello me haya explicado mucho mejor.

muchas gracias!

H o l a:

Te anexo la macro para actualizar los registros nuevos

Sub abrirtxt()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets(1)
    ruta = l1.Path & "\"
    arch = "archivo1.txt"
    u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
    cuantos = u - 2
    If u < 2 Then u = 2
    If Dir(ruta & arch) <> "" Then
        Workbooks.OpenText Filename:=ruta & arch, Origin:=xlMSDOS, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, _
            Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
        Set l2 = ActiveWorkbook
        Set h2 = l2.Sheets(1)
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
        h2.Range("A" & cuantos + 1 & ":A" & u2).Copy _
        h1.Range("A" & u)
        l2.Close False
    Else
        MsgBox "El archivo no existe", vbCritical
    End If
End Sub
' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas