Leer un archivo txt

28/09/2004 - 21:47 por ZBB | Informe spam
Tengo una macro que necesita leer una lista de dos
columnas, ejemplo
V1,U1
V2,U2

Vn,Un
almacenadas en un archivo de textto de extension .txt.
Como hago para que la macro abra el archivo y cargue en 2
matrices V(n), U(n) los datos contenido en el archivo txt
Si alguien me da una pista, muchas gracias
 

Leer las respuestas

#1 Fernando Arroyo
29/09/2004 - 16:48 | Informe spam
Prueba con el siguiente código, pero ten en cuenta que para que funcione tendrás que establecer una referencia a la biblioteca "Microsoft ActiveX Data Objects X.x Library" (donde X.x es la versión más moderna que tengas). Esto se hace desde Herramientas->Referencias, estando en el editor de VBA.

Sub prueba()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Dim V() As String, U() As String
Dim n As Long

Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\;" & _
"Extended Properties=""text;HDR=No;FMT=Delimited"""

Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM prueba.txt", cn, adOpenStatic, adLockReadOnly, adCmdText

ReDim V(1 To rs.RecordCount)
ReDim U(1 To rs.RecordCount)

rs.MoveFirst
For n = 1 To rs.RecordCount
V(n) = Left(rs(0), InStr(rs(0), ",") - 1)
U(n) = Mid(rs(0), InStr(rs(0), ",") + 1)
rs.MoveNext
Next n

'
'Ahora las matrices V y U tienen la 1ª y 2ª "columna" del archivo de texto
'

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub


En principio el "proveedor" OLEDB debería ser capaz de crear el recordset con dos campos él solito, basándose en las comas como delimitadores, pero el hecho es que a mí no me ha funcionado esto, razón por la cual es el código quien se encarga de dividir el registro en dos campos. Si a ti sí te crea los dos campos, sería necesario modificar el código, algo como:

For n = 1 To rs.RecordCount
V(n) = rs(0)
U(n) = rs(1)
rs.MoveNext
Next n

aunque no estoy seguro de que el código anterior sea correcto, dado que no puedo probarlo.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"ZBB" escribió en el mensaje news:0e7b01c4a594$007818b0$
Tengo una macro que necesita leer una lista de dos
columnas, ejemplo
V1,U1
V2,U2

Vn,Un
almacenadas en un archivo de textto de extension .txt.
Como hago para que la macro abra el archivo y cargue en 2
matrices V(n), U(n) los datos contenido en el archivo txt
Si alguien me da una pista, muchas gracias

Preguntas similares