Copiar datos de un archivo de texto hacia excel

Saludos:
Tengo un archivo de texto con el nombre de: Reporte.txt (en la unidad D:) y tiene 5000 mil cuadros de la siguiente manera:
********************************************************
-------------------------- reading introduction ----------------- 1.30 ----
Medidor: 0002254384 Program ID: 000
Suministro : 177/7459 - / Programmer ID: 0003
/ Register Firmware: 000204 05 F-128K(M)
Register Type: A1R-AL
File: BILLGC~1
-------------------------- non-recurring dates ----------------------------
date day type date day type
---------- --------- ---------- ---------
04/01/2010 holiday 04/03/2015 holiday
04/02/2010 holiday 03/24/2016 holiday
04/21/2011 holiday 03/25/2016 holiday
04/22/2011 holiday 04/13/2017 holiday
04/05/2012 holiday 04/14/2017 holiday
04/06/2012 holiday 03/29/2018 holiday
03/28/2013 holiday 03/30/2018 holiday
03/29/2013 holiday 04/18/2019 holiday
04/17/2014 holiday 04/19/2019 holiday
04/18/2014 holiday 04/09/2020 holiday
04/02/2015 holiday 04/10/2020 holiday
Mi pregunta es:
Como puedo copiar Medidor, Suministro, Fecha Inicio(04/01/2010) y Fecha Final (04/10/2020) ( que están en Negrita y subrayado). Hacia un archivo de excel Hoja1 en filas en ese orden.
Att. Viel35

1 Respuesta

Respuesta
1
Aquí te paso un código que tendrás que adaptar a tu caso concreto. En particular los subrayados están solo para indicar qué quieres copiar pero no aparecen en el archivo inicial. Tampoco sé como están separados los bloques registros para poder afinar el código, aunque espero que examinando lo que te paso puedas hacerlo tu.
Sub AbriArchivoTexto()
'Abre el archivo
Workbooks.OpenText Filename:="D:\Reporte.txt", _
Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=True, OtherChar:=":", FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7 _
, 1)), TrailingMinusNumbers:=True
Dim maxi As Long
Dim i As Long
Dim j As Long
Dim caso As Integer
Dim linea As String
Dim previa As String
Dim aux As String
maxi = Range("A65535").End(xlUp).Row 'busca la ultima fila del archivo con datos
j = 1
previa = ""
For i = 1 To maxi
previa = linea
linea = Range(("A" & i)).Value
If Len(linea) > 1 Then
'Para las líneas no vacias selecciona los posibles casos. Falta ver el caso 4, la fecha final, pero es necesario conocer como están separados los registros
caso = 0
If InStr(1, linea, "Medidor") > 0 Then caso = 1
If InStr(1, linea, "Suministro") > 0 Then caso = 2
If (InStr(1, previa, "-----") > 0) And (InStr(1, linea, "/") = 3) Then 'fecha inicial
caso = 3
End If
'aqui incluir la selección del caso 4, fin de fecha
' por el momento he puesto un select y uno los casos 1,2 y 3 porque hacen lo mismo
Select Case caso
Case 0
j = j - 1 'porque luego la sumamos
Case 1,2,3 'medidor, suminsitro y primera fecha
aux = Range(("B" & i)).Value
Worksheets("Hoja2").Range("a" & j).Value = linea & " " & aux
case 4 'ultima fecha
End Select
j = j + 1
End If
Next i
End Sub
Bueno. Es todo. Tendrás que completar la identificación del caso 4 y como construir lo que quieres copiar en tal caso. He supuesto que existe una "Hoja2" para copiar los datos. Si así no fuera tendrás que crearla a mano o por código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas