Abrir archivos txt

30/07/2008 - 23:26 por arca | Informe spam
Hola.
Quiero cargar un archivo txt en la columna A, desde una direccion especifica
de mi equipo x.ej. c:\espacio, al dar clic en un boton.

En espera de su soporte.

Saludos
arca-Ecuador

Preguntas similare

Leer las respuestas

#11 Héctor Miguel
22/10/2008 - 07:53 | Informe spam
hola, 'anonimo' !

hay dos "detallitos" con los datos que expones del arreglo de tu archivo de texto y algunas "restricciones"...
en cuanto las maquinarias de consulta a bases de datos externas (como ADO, ODBC, etc.)

1) "asumen" que el primer registro en la base de datos son "titulos", por lo que no es agregado al objeto "recordset"
(con esto se estaria "perdiendo" la primer fila o registro en el archivo de texto, aun estableciendo el HDR=No) :-((
2) generalmente toman como "separador" lo que contiene la llave en el registro de windows siguiente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format
y por lo general "esperan" que se trate de archivos *.CSV

el primer punto no lo he logrado "salvar" (hasta las pruebas realizadas), a menos que TU le agregues titulos en la primer linea al *.TXT -???-
el segundo se puede "obviar" generando un archivo de escenario diferente al registro de windows (para NO "tocarlo")

prueba con el siguiente ejemplo, y... si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Copiar_txt()
Dim Ruta As String, Archivo As String, SchemaFile As String, NewIni As Integer, _
Consulta As String, Conexion As Object, Registros As Object
Ruta = "c:\documents and settings\ing. diego herrera\escritorio\prueba"
Archivo = "examen.txt"
Consulta = "select * from " & Archivo
SchemaFile = Ruta & "\schema.ini"
If Dir(SchemaFile) <> "" Then Kill SchemaFile
NewIni = FreeFile
Open SchemaFile For Output Access Write As #NewIni
Print #NewIni, "[" & Archivo & "]"
Print #NewIni, "Format=Delimited( )"
Close #NewIni
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Ruta & "\;Extended Properties=""Text;HDR=No;"";"
' Conexion.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
Ruta & ";Extensions=asc,csv,tab,txt;"
Set Registros = CreateObject("ADODB.Recordset")
On Error Resume Next ' esta linea es por si las dudas ??? '
Registros.Open Consulta, Conexion
Range("a1").CopyFromRecordset Registros
If Registros.State = adStateOpen Then Registros.Close
Set Registros = Nothing
Conexion.Close
Set Conexion = Nothing
Kill SchemaFile
End Sub

__ OP __
este es el codigo:

Sub Copiar_txt()
Dim Ruta As String, Archivo As String, Consulta As String, _
Conexion As Object, Registros As Object
Ruta = "C:\Documents and Settings\Ing. Diego Herrera\Escritorio\PRUEBA"
Archivo = "EXAMEN.txt"
Consulta = "select * from " & Archivo
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Ruta & "\;Extended Properties=""text;HDR=No;FMT=Delimited"""
Set Registros = CreateObject("ADODB.Recordset")
On Error Resume Next ' esta linea es por si las dudas ??? '
Registros.Open Consulta, Conexion
Range("a1").CopyFromRecordset Registros
If Registros.State = adStateOpen Then Registros.Close
Set Registros = Nothing
Conexion.Close
Set Conexion = Nothing
End Sub

y esta es una parte de como vienen los datos en el archvo txt

151.95 206.29 141.10 195.97 111.40 133.26 178.65 125.01 152.24 320.57 283.85
592.87 262.40 219.49 200.92 157.19 195.15 251.67 182.36 200.51 187.72 197.62
170.39 174.93 179.47 -145.64 70.96 138.21 191.02 151.00 199.69 102.32 186.07
112.22 200.10 152.65 158.43 153.89 122.95 259.92 176.58 204.64 285.50 184.83
208.76 220.73 224.44 -76.74 193.50 179.06 215.36 219.49 172.46 140.69 174.9

Te agradezco tu colaboracion estoy muy enredado con esto
Respuesta Responder a este mensaje
#12 Héctor Miguel
22/10/2008 - 07:56 | Informe spam
hola, (...) ???

Me surge una inquietud, es posible que tan pronto abra el archivo de excel
se ejecute esta macro automaticamente, trayendome los datos que se encuentren en ese momento en el archivo txt
claro teniendo en cuenta que estos solo van a cambiar numericamnete hablando, mas no la caantidad de estos.



una vez que hayas probado/corregido/... la macro del mensaje anterior...
- solo "llama" a esa macro en el evento '_open' en el modulo de codigo del libro (ThisWorkbook)
asi tendras disponibilidad de la macro no solo al abrirse el libro (p.e.)

Private Sub Workbook_Open()
Copiar_txt
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#13 me sirvio tambien la info pero tengo...
23/10/2008 - 03:29 | Informe spam
Hector buenas noches

Muchas gracias por la info. ha sido de gran utilidad con el codigo que me
diste, logre ya organizar por celdas la info , solamente que me desapacio el
punto de los decimales, me explico si el dato era 152.5 me aparce 1525. Y lo
otro es que no me actualiza la macro automaticamente al abrir excel tengo
que ir al menu herramientas, luego a macro y finalmente dar click en
macros y ejecutar para actualizar la macro. Hay algo para que al abrir
excel todo esto se ejecute...

Muchas gracias... usted es muy amable
Respuesta Responder a este mensaje
#14 Héctor Miguel
23/10/2008 - 04:30 | Informe spam
hola, (...) ???

__ 1 __
... logre ya organizar por celdas la info, solamente que me desapacio el punto de los decimales
me explico si el dato era 152.5 me aparce 1525.


__ 2 __
Y lo otro es que no me actualiza la macro automaticamente al abrir excel
tengo que ir al menu herramientas, luego a macro y finalmente dar click en macros
y ejecutar para actualizar la macro. Hay algo para que al abrir excel todo esto se ejecute...



1) esto es un tema del separador decimal en la configuracion regional del panel de control de windows
que (aparentemente) es diferente de lal configuarcion del equipo que "genera" los *.TXT
(creo que) la parte medular estaria en determinar si "eran" una o dos decimales "originalmente" -???-

la otra alternativa pudiera ser el codigo original (todas los registros como una sola columna)...
y despues de terminada esa macro, sustituir un separador decimal por otro... y luego usar "texto en columnas" -???-

2) para esto debes usar el evento '_open' en el modulo de codigo de tu libro (ThisWorkbook) +/- asi:

Private Sub Workbook_Open()
Copiar_txt
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#15 me sirvio tambien la info pero tengo...
23/10/2008 - 04:53 | Informe spam
Hola Hector gracias por tu respuesta

1. los decimales que utiliz el txt son dos generalmente pero a veces se
encuentram datos con un solo decimal. El tema es que cuando hacia la
conversion de txt a excel manualmente ( archivo , abrir, txt..) lo pasaba
sin problema tal y como estaba en el txt con punto decimal

2. La verdad es q soy muy novato en esto de las macros realmente no se como
colocar esta nueva codificacion que me enviastes , me podrias explicar mejor
en que parte adicionar la nueva codificacion?

Gracias Hector
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida