Importar txt con columnas separadas por espacios a excel

Intento crear una macro con trozos que he recopilado en este hilo pero no consigo que funcione. Necesito que de un txt que se reescribe cada 5min me importe a excel usando espacios como separador de columnas en el txt. El nombre del txt es siempre igual y en la misma carpeta.

2 dudas añadidas a esta importación son, si se puede cambiar automáticamente el formato "NorteAmericano" de fecha MDA por DMA y los separadores decimal(,) y de miles(.) Que vienes invertidos, es decir, ellos usan punto para los decimales y coma para los miles.

1 Respuesta

Respuesta
1

H o l a:

Te anexo una macro para que la pruebes.

Sub ImportarTxt()
'Por.Dante Amor
    ruta = "C:\trabajo\"
    arch = "archivo 1"
    hoja = "Hoja3"
    On Error Resume Next
    ActiveWorkbook.Connections(arch).Delete
    On Error GoTo 0
    '
    With Sheets(hoja).QueryTables.Add(Connection:= _
        "TEXT;" & ruta & arch & ".txt", Destination:=Sheets(hoja).Range("$A$1"))
        .Name = "ImportarTxt"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 5
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierNone
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileColumnDataTypes = Array(2, 1, 3)
        .TextFileDecimalSeparator = "."
        .TextFileThousandsSeparator = ","
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Lo que tienes que ajustar en la macro:

1. La carpeta en la siguiente línea:

ruta = "C:\trabajo\"

2. El nombre del archivo sin extensión en la siguiente línea:

arch = "archivo 1"

3. El nombre de la hoja en donde quieres escribir los datos:

hoja = "Hoja3"

4. El tiempo de actualización, si quieres que se ejecute cada 10 minutos, en la siguiente línea, cambia el 5 por el 10:

.RefreshPeriod = 5

5. El número de columnas que vienen en el archivo, de la siguiente forma:

 .TextFileColumnDataTypes = Array(2, 1, 3)

En la instrucción anterior, tengo esto Array(2, 1, 3)

El 2 significa tipo Texto, el 1 tipo General, el 3 tipo Fecha (MDA)

En mi ejemplo, mi archivo tiene 3 columnas.

La primer columna es tipo texto, la segunda es general y la tercera es una fecha, pero con formato (MDA).

Lo que tienes que agregar son números 1, 2 o 3 por cada columna que tienes, por ejemplo, si tienes 7 columnas, de esta forma

Columna             Tipo

1                            Texto

2                            General

3                            Texto

4                            Fecha

5                            General

6                            General

7                            Fecha

Entonces tienes que poner así la línea:

.TextFileColumnDataTypes = Array(2, 1, 2, 3, 1, 1, 3)

6. Los tipos General son importes, entonces todos quedarán con este formato:

        .TextFileDecimalSeparator = "."
        . TextFileThousandsSeparator = ","

Prueba con los separadores, si no te funcionan, entonces cambia a esto:

        .TextFileDecimalSeparator = ","
        . TextFileThousandsSeparator = "."

Avísame si necesitas apoyo para los cambios en la macro.


DAnte,

Muchas gracias por tu tpo.

Creo haberlo comprendido pero me salta un error que me impide ver el resultado :

"Se ha producido error 1004 en tiempo de ejecución: Error definido por la aplicación o el objeto".

Al ejecutarlo por partes me salta en las líneas finales.

H o l a:

Presiona depurar y dime en cuál línea se detiene.

¿Qué versión de excel tienes?

Tengo Excel 2007.

Salta en la última línea:

.Refresh BackgroundQuery:=False
End With
End Sub

¿Tienes protegida la hoja?

¿Bloqueadas las celdas?

¿Protegido el libro?

¿Las celdas está combinadas?

¿Tienes la hoja oculta?

Crea un nuevo libro, crea una hoja llamada "Hoja3" y ejecuta la macro.

¡Gracias!

Tenias razón, debía ser problema del libro anterior, con uno nuevo todo va genial. También tenia puesto el nombre del archivo con la extensión y veo que no hay que ponerlo.

Muchas gracias, me has ayudado mucho.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas