Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Abrir archivos txt

159 views
Skip to first unread message

arca

unread,
Jul 30, 2008, 5:26:09 PM7/30/08
to
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

Héctor Miguel

unread,
Jul 30, 2008, 5:34:04 PM7/30/08
to
hola, 'anonimo/a' !

> 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...

op1: prueba haciendo consultas a bases de datos externas de archivos de texto
y te evitas el uso de macros y botones adicionales (solo sigue los pasos del asistente)

op2: podrias usar macros y ADO para rescatar datos desde archivos de texto
hay algunas consultas anteriores al respecto, o podrias ampliar los detalles pendientes

saludos,
hector.


arca

unread,
Jul 30, 2008, 5:55:03 PM7/30/08
to
Gracias Hector Miguel.
Pero busco la solucion a mi opción.
Quiero cargar un archivo txt en la columna, este archivo esta en mi maquina
en el c:\espacio.txt

Héctor Miguel

unread,
Jul 30, 2008, 7:07:16 PM7/30/08
to
hola, (...) ???

> Pero busco la solucion a mi opcion.


> Quiero cargar un archivo txt en la columna

> este archivo esta en mi maquina en el c:\espacio.txt

en tanto te decides por hacer el intento con otras alternativas...
copia/pega lo siguiente en un modulo de codigo estandar y de regreso en la hoja ejecutas la macro:
OJO: requiere de excel 2000 o superior (en caso contrario, comenta datos adicionales)

Sub Copiar_txt()
Dim Ruta As String, Archivo As String, Consulta As String, _
Conexion As Object, Registros As Object
Ruta = "c:\"
Archivo = "espacio.txt"
Consulta = "select * from " & Archivo
Set Conexion = CreateObject("ADODB.Connection")
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
End Sub

lo "correcto" es establecer referencias a ADO en el proyecto de macros (pero hay detalles que no has comentado)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __

arca

unread,
Jul 30, 2008, 7:36:00 PM7/30/08
to
Muchas gracias el soporte Héctor Miguel.. gusto lo que necesitaba.
PD: La primera línea del archivo txt no me recupera, pero bueno no es muy
importante.

Saludos
Angel-Ecuador

Héctor Miguel

unread,
Jul 30, 2008, 7:52:58 PM7/30/08
to
hola, Angel !

> PD: La primera linea del archivo txt no me recupera, pero bueno no es muy importante.

el que no te muestre la primera linea del archivo se debe a que las maquinarias de consulta a bases de datos
asumen (por omision) que el primer registro son los titulos y para poder administrar este parametro
necesitas cambiar de "proveedor" modificando la linea que establece la conexion +/- a lo siguiente:

-> de:


Conexion.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
Ruta & ";Extensions=asc,csv,tab,txt;"

-> a:
Conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Ruta & "\;Extended Properties=""text;HDR=No;FMT=Delimited"""

o (si lo prefieres) puedes consultar temas relacionados con el uso da ADO y la obtencion de datos externos (p.e.) desde:

Como abrir archivos de texto delimitado que utilizan el texto IIsam del proveedor Jet
http://support.microsoft.com/kb/q262537/
-> Microsoft Active Data Objects y Microsoft ADO Ext.2.x for DDL and Security

otras fuentes de informacion:
-> http://tinyurl.com/2ejcmp http://preview.tinyurl.com/2ejcmp

-> Carl Prothman
ODBC Driver for TextFiles
http://www.carlprothman.net/Default.aspx?tabid=90#ODBCDriverForText
OLEDB Provider for Microsofr Jet TextFiles
http://www.carlprothman.net/Default.aspx?tabid=87#OLEDBProviderForMicrosoftJetText

Héctor Miguel

unread,
Jul 30, 2008, 7:58:41 PM7/30/08
to
hola (de nuevo), Angel ! (fe de erratas)

> -> de:
> Conexion.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
> Ruta & ";Extensions=asc,csv,tab,txt;"
>
> -> a:
> Conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
> Ruta & "\;Extended Properties=""text;HDR=No;FMT=Delimited"""

OJO: que se me quedo una barra invertida en la segunda linea de la (nueva) propuesta...

de: -> Ruta & "\;Extended Properties=""text;HDR=No;FMT=Delimited"""
a: -> Ruta & ";Extended Properties=""text;HDR=No;FMT=Delimited"""

saludos,
hector.


sirvio tambien la info pero tengo...@discussions.microsoft.com me sirvio tambien la info pero tengo...

unread,
Oct 21, 2008, 10:54:09 PM10/21/08
to
Hola

tengo un problema parecido a que se mencionaba en este foro, toda esta info
me sirvio, pero el txt que estoy utilizando son datos numericos, ellos vienen
separados por espacios, como hago para que la macro me ubique cada dato en
una selda, ya que como actualmente coloco la macro con la programacion que
uds dieron me colocado todos los datos en la columna A.
Les agradezco si me pueden ayudar

Héctor Miguel

unread,
Oct 21, 2008, 11:04:43 PM10/21/08
to
hola, 'anonimo/a' !

pues... seria bueno conocer como estan los datos (numeros y espacios) en el archivo txt
y (de pasadita) si expones cual es el codigo que estas aplicando (para conocer mas datos) ;)

saludos,
hector.

__ OP __


> tengo un problema parecido a que se mencionaba en este foro, toda esta info me sirvio

> pero el txt que estoy utilizando son datos numericos, ellos vienen separados por espacios

> como hago para que la macro me ubique cada dato en una selda

me sirvio tambien la info pero tengo...

unread,
Oct 21, 2008, 11:15:01 PM10/21/08
to

Gracias hector

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

me sirvio tambien la info pero tengo...

unread,
Oct 21, 2008, 11:26:00 PM10/21/08
to

Hector :

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.

Gracias

Héctor Miguel

unread,
Oct 22, 2008, 1:53:20 AM10/22/08
to
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 __

Héctor Miguel

unread,
Oct 22, 2008, 1:56:03 AM10/22/08
to
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.


me sirvio tambien la info pero tengo...

unread,
Oct 22, 2008, 9:29:01 PM10/22/08
to

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

Héctor Miguel

unread,
Oct 22, 2008, 10:30:35 PM10/22/08
to
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:

me sirvio tambien la info pero tengo...

unread,
Oct 22, 2008, 10:53:01 PM10/22/08
to
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

Héctor Miguel

unread,
Oct 22, 2008, 11:32:11 PM10/22/08
to
hola, (...) ???

> 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

(creo que) estamos "tratando" de complicar algo que debiera ser mas sencillo :))
por que no pruebas usando la grabadora de macros mientras abres de la forma tradicional ese archivo ?
(asegurate de establecer todas las opciones aplicables en el dialogo de la apertura)
y despues revisas (o comentas) que cambios necesitarias hacer al codigo generado -?-

> 2. ... no se como colocar esta nueva codificacion que me enviastes


> me podrias explicar mejor en que parte adicionar la nueva codificacion?

una vez que se haya resuelto el tema anterior, haces un clic-secundario en el icono de excel...
el que aparece a la izquierda del menu (archivo) en las versiones 97/2003 y seleccionas "ver codigo"
y en la ventana que aparezca, es ahi donde pones el llamado a "la macro"

saludos,
hector.


me sirvio tambien la info pero tengo...

unread,
Oct 23, 2008, 9:12:00 PM10/23/08
to

Hola hector:

Hoy no se que paso el codigo que teniamos bien el que nos habia funcionado,
no se que pasa y ahora los datos de la primera columna aparecen con algo
adicional. me aparece con cuadritos y mas numeros no se que hacer

Help me
"

me sirvio tambien la info pero tengo...

unread,
Oct 23, 2008, 9:35:01 PM10/23/08
to

Ya hector por alguna razon se me daño el txt pero ya lo arregle.

solo me queda el einconveniente de los decimales y colocar que se ejecute la
macro auto al abrir excel.

En que parte del texto del codigo coloco lo que me dijiste?

Gracias
Diego herrera

Héctor Miguel

unread,
Oct 23, 2008, 9:38:39 PM10/23/08
to
hola (como sea que te llames), !

> ... no se que paso el codigo que... habia funcionado... los datos de la primera columna aparecen
> ... con cuadritos y mas numeros no se que hacer ...

ya probaste (segun el mensaje inmediato anteiror) a abrir el *.TXT de la manera tradicional ?
(menu) archivo / abrir / archivos de texto... (etc. etc. etc.
PERO... usando la grabadora de macros mientras realizas este proceso ?
(y despues comentas que cambios necesitarias hacer sobre el codigo generado ?)

saludos,
hector.


me sirvio tambien la info pero tengo...

unread,
Oct 23, 2008, 9:56:01 PM10/23/08
to

Soy un tonto jejeje

ya me actualiza la macro al abrir excel, intente con la grabadora , pero
prefiero el codigo que me diste..... unicamente me falta lo de los decimales..

Saludos desde colombia

Diego herrera

Héctor Miguel

unread,
Oct 23, 2008, 11:15:54 PM10/23/08
to
hola, Diego !

> ya me actualiza la macro al abrir excel

> intente con la grabadora, pero prefiero el codigo que me diste
> unicamente me falta lo de los decimales...

si ya comentaste que abriendolo del modo tradicional (menu: archivo / abrir / archivos de texto...)
no has tenido problemas con las decimales -???- (solo por hacer la prueba)...
intenta el msmo procedimiento "tradicional" pero usandolo desde una macro +/- como sigue:

-> OJO: segun el ejemplo que expusiste, el archivo *.TXT contiene 11 columnas con datos numericos
pon especial atencion al bucle donde se rellena una matriz (Columnas) para el argumento "FieldInfo:=..."
Y TAMBIEN a la linea donde se indica cual es "la hoja" donde se copian los datos (en el ThisWorkbook.....)

Sub Copiar_txt()
Dim n As Byte, Columnas(0 To 10, 1 To 2), Rango As String
For n = 1 To 11: Columnas(n - 1, 1) = n: Columnas(n - 1, 2) = 1: Next
Application.ScreenUpdating = False
Workbooks.OpenText _
FileName:="c:\documents and settings\ing. diego herrera\escritorio\prueba\examen.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Columnas
Rango = Range("a1").CurrentRegion.Address
ThisWorkbook.Worksheets("hoja1").Range(Rango).Value = Range(Rango).Value
ActiveWorkbook.Close False
End Sub

o... si lo anterior te sigue generando "problemas" con el separador de las decimales...
Y... tu excel es version 2000 o superior, puedes "cambiar" la apertura considerando diferentes separadores...
cambiando la ultima linea del metodo .OpenText +/- asi:
de:
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Columnas
a:
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Columnas, _
DecimalSeparator:=".", ThousandsSeparator:=",", TrailingMinusNumbers:=False

(solo asegurate de cual separador corresponde a decimales o miles) -?-

me sirvio tambien la info pero tengo...

unread,
Oct 24, 2008, 8:41:03 PM10/24/08
to
Hector buenas noches

Todo me sirvio me quedo perfecta la macro................
Quedare eternamente agradecido..... Dios te bendiga

Saludos desde colombia

DIEGO HERRERA

Héctor Miguel

unread,
Oct 24, 2008, 8:50:55 PM10/24/08
to
hola, Diego !

gracias a ti, por el "feed-back" ;)
y ya puedes usar -al menos- dos formas para alcanzar tu objetivo ;)

saludos (desde México)
hector.


me sirvio tambien la info pero tengo...

unread,
Oct 27, 2008, 8:57:01 PM10/27/08
to

hector buenas noches:

es lo siguiente

el txt esta dividido en dos partes. la primera me toma los decimales sin
problema pero la segunda ya no . Acontinuacion acexo como va el final de la
primera parte y el inicio de la segunda:

-24.86 -94.17 -111.22 39.83 36.07 -57.69 -125.14 -109.65 -145.90 -132.26
-58.02 -138.47 -134.43 -114.00 -124.20 -132.26 -133.83 -116.78 -139.69
-153.86 -153.91 -95.71 -94.47 486.05 -118.01 -139.05 258.05 -98.82 -132.59
-39.43 36.68 -130.72 58.38 -104.70 -125.77 -67.27 -101.90 108.79 368.16
482.28 -115.51 -80.83 195.79 164.49 82.78 72.52 -104.37 -36.30 -123.60
-145.87 -104.47 -132.56 -94.47 -111.82 -98.18 -144.97 -163.86 -147.42 -91.09
-64.74 -129.51 -137.54 -88.64 -43.65

---------
Izquierdo
---------
286.48 6.19 -4.39 136.15 134.24 73.31 -10.01 61.49 5.63 9.23 -6.02 4.95
-5.74 17.05 0.11 -0.56 0.00 -9.06 -3.83 -1.63 -0.56 -15.36 -2.87 537.79 -4.67
-16.20 59.52 0.45 -5.74 2.36 117.19 -0.56 0.17 -16.26 -3.71 8.50 -1.58 174.13
459.37 542.57 -24.42 -20.87 36.51 64.31 97.95 81.18 -2.87 3.88 -4.78 11.98
48.16 -8.05 7.03 -2.59 2.48 22.28 -10.41 -3.77 8.38 14.18 -31.39 -8.66 29.71
30.55

Vale la pena anotaar que faltan columas por incluir en total 64.

Héctor Miguel

unread,
Oct 27, 2008, 10:24:23 PM10/27/08
to
hola, Diego !

(como veras...) no se puede apreciar donde inicia "cada parte" del *.TXT (cuantas columnas son)
por que no "subes" un ejemplo del archivo de texto en algun servidor publico/gratuito/... -???-

saludos,
hector.

__ OP __

marcos borges

unread,
Aug 31, 2010, 2:28:22 AM8/31/10
to
Sub Abrir_y_DividirEnComumnas()

'abre un archivo de texto en Excel, divide en columnas
'hay que poner el tipo de delimitador (en este caso 'Space')

'dimensiones
Dim strNombreArchivo

'di?logo para abrir archivo
strNombreArchivo = Application.GetOpenFilename
If strNombreArchivo = False Then Exit Sub

'abrir el archivo y dividir en columnas
Workbooks.OpenText _
Filename:=strNombreArchivo, _
Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False, _
FieldInfo:=Array(1, 1)
End Sub

> On Wednesday, July 30, 2008 5:26 PM arc wrote:

> 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


>> On Wednesday, July 30, 2008 5:34 PM H?ctor Miguel wrote:

>> hola, 'anonimo/a' !
>>
>>

>> op1: prueba haciendo consultas a bases de datos externas de archivos de texto
>> y te evitas el uso de macros y botones adicionales (solo sigue los pasos del asistente)
>>
>> op2: podrias usar macros y ADO para rescatar datos desde archivos de texto
>> hay algunas consultas anteriores al respecto, o podrias ampliar los detalles pendientes
>>

>> saludos,
>> hector.


>>> On Wednesday, July 30, 2008 5:55 PM arc wrote:

>>> Gracias Hector Miguel.
>>> Pero busco la solucion a mi opci??n.
>>> Quiero cargar un archivo txt en la columna, este archivo esta en mi maquina
>>> en el c:\espacio.txt
>>>
>>>
>>> "H??ctor Miguel" wrote:


>>>> On Wednesday, July 30, 2008 7:07 PM H?ctor Miguel wrote:

>>>> hola, (...) ???
>>>>
>>>>

>>>> en tanto te decides por hacer el intento con otras alternativas...
>>>> copia/pega lo siguiente en un modulo de codigo estandar y de regreso en la hoja ejecutas la macro:
>>>> OJO: requiere de excel 2000 o superior (en caso contrario, comenta datos adicionales)
>>>>

>>>> Sub Copiar_txt()
>>>> Dim Ruta As String, Archivo As String, Consulta As String, _
>>>> Conexion As Object, Registros As Object

>>>> Ruta = "c:\"
>>>> Archivo = "espacio.txt"


>>>> Consulta = "select * from " & Archivo
>>>> Set Conexion = CreateObject("ADODB.Connection")

>>>> 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

>>>> End Sub
>>>>
>>>> lo "correcto" es establecer referencias a ADO en el proyecto de macros (pero hay detalles que no has comentado)
>>>>

>>>> si cualquier duda (o informacion adicional)... comentas ?

>>>> saludos,
>>>> hector.
>>>>
>>>> __ OP __


>>>>> On Wednesday, July 30, 2008 7:36 PM arc wrote:

>>>>> Muchas gracias el soporte H??ctor Miguel.. gusto lo que necesitaba.
>>>>> PD: La primera l??nea del archivo txt no me recupera, pero bueno no es muy
>>>>> importante.
>>>>>
>>>>> Saludos
>>>>> Angel-Ecuador
>>>>>
>>>>>
>>>>> "H??ctor Miguel" wrote:


>>>>>> On Wednesday, July 30, 2008 7:52 PM H?ctor Miguel wrote:

>>>>>> hola, Angel !


>>>>>>
>>>>>>
>>>>>> el que no te muestre la primera linea del archivo se debe a que las maquinarias de consulta a bases de datos
>>>>>> asumen (por omision) que el primer registro son los titulos y para poder administrar este parametro
>>>>>> necesitas cambiar de "proveedor" modificando la linea que establece la conexion +/- a lo siguiente:
>>>>>>
>>>>>> -> de:

>>>>>> Conexion.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
>>>>>> Ruta & ";Extensions=asc,csv,tab,txt;"
>>>>>>

>>>>>> -> a:


>>>>>> Conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
>>>>>> Ruta & "\;Extended Properties=""text;HDR=No;FMT=Delimited"""
>>>>>>

>>>>>> o (si lo prefieres) puedes consultar temas relacionados con el uso da ADO y la obtencion de datos externos (p.e.) desde:
>>>>>>
>>>>>> Como abrir archivos de texto delimitado que utilizan el texto IIsam del proveedor Jet
>>>>>> http://support.microsoft.com/kb/q262537/
>>>>>> -> Microsoft Active Data Objects y Microsoft ADO Ext.2.x for DDL and Security
>>>>>>
>>>>>> otras fuentes de informacion:
>>>>>> -> http://tinyurl.com/2ejcmp http://preview.tinyurl.com/2ejcmp
>>>>>>
>>>>>> -> Carl Prothman
>>>>>> ODBC Driver for TextFiles
>>>>>> http://www.carlprothman.net/Default.aspx?tabid=90#ODBCDriverForText
>>>>>> OLEDB Provider for Microsofr Jet TextFiles
>>>>>> http://www.carlprothman.net/Default.aspx?tabid=87#OLEDBProviderForMicrosoftJetText
>>>>>>

>>>>>> si cualquier duda (o informacion adicional)... comentas ?
>>>>>> saludos,
>>>>>> hector.


>>>>>>> On Wednesday, July 30, 2008 7:58 PM H?ctor Miguel wrote:

>>>>>>> hola (de nuevo), Angel ! (fe de erratas)
>>>>>>>
>>>>>>>

>>>>>>> OJO: que se me quedo una barra invertida en la segunda linea de la (nueva) propuesta...
>>>>>>>

>>>>>>> de: -> Ruta & "\;Extended Properties=""text;HDR=No;FMT=Delimited"""
>>>>>>> a: -> Ruta & ";Extended Properties=""text;HDR=No;FMT=Delimited"""
>>>>>>>
>>>>>>> saludos,
>>>>>>> hector.


>>>>>>>> On Tuesday, October 21, 2008 10:54 PM me sirvio tambien la info pero tengo.. wrote:

>>>>>>>> Hola


>>>>>>>>
>>>>>>>> tengo un problema parecido a que se mencionaba en este foro, toda esta info

>>>>>>>> me sirvio, pero el txt que estoy utilizando son datos numericos, ellos vienen
>>>>>>>> separados por espacios, como hago para que la macro me ubique cada dato en
>>>>>>>> una selda, ya que como actualmente coloco la macro con la programacion que

>>>>>>>> uds dieron me colocado todos los datos en la columna A.
>>>>>>>> Les agradezco si me pueden ayudar


>>>>>>>>> On Tuesday, October 21, 2008 11:04 PM H?ctor Miguel wrote:

>>>>>>>>> hola, 'anonimo/a' !
>>>>>>>>>
>>>>>>>>> pues... seria bueno conocer como estan los datos (numeros y espacios) en el archivo txt
>>>>>>>>> y (de pasadita) si expones cual es el codigo que estas aplicando (para conocer mas datos) ;)
>>>>>>>>>

>>>>>>>>> saludos,
>>>>>>>>> hector.
>>>>>>>>>
>>>>>>>>> __ OP __


>>>>>>>>>> On Tuesday, October 21, 2008 11:15 PM mesirviotambienlainfoperoteng wrote:

>>>>>>>>>> Gracias hector


>>>>>>>>>>> On Tuesday, October 21, 2008 11:26 PM mesirviotambienlainfoperoteng wrote:

>>>>>>>>>>> Hector :


>>>>>>>>>>>
>>>>>>>>>>> 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.
>>>>>>>>>>>

>>>>>>>>>>> Gracias


>>>>>>>>>>>> On Wednesday, October 22, 2008 1:53 AM H?ctor Miguel wrote:

>>>>>>>>>>>> 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.
>>>>>>>>>>>>


>>>>>>>>>>>>> On Wednesday, October 22, 2008 1:56 AM H?ctor Miguel wrote:

>>>>>>>>>>>>> hola, (...) ???
>>>>>>>>>>>>>
>>>>>>>>>>>>>

>>>>>>>>>>>>> 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.


>>>>>>>>>>>>>> On Thursday, October 23, 2008 9:12 PM mesirviotambienlainfoperoteng wrote:

>>>>>>>>>>>>>> Hola hector:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hoy no se que paso el codigo que teniamos bien el que nos habia funcionado,
>>>>>>>>>>>>>> no se que pasa y ahora los datos de la primera columna aparecen con algo

>>>>>>>>>>>>>> adicional. me aparece con cuadritos y mas numeros no se que hacer
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Help me
>>>>>>>>>>>>>> "


>>>>>>>>>>>>>>> On Thursday, October 23, 2008 9:35 PM mesirviotambienlainfoperoteng wrote:

>>>>>>>>>>>>>>> Ya hector por alguna razon se me da??o el txt pero ya lo arregle.


>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> solo me queda el einconveniente de los decimales y colocar que se ejecute la
>>>>>>>>>>>>>>> macro auto al abrir excel.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> En que parte del texto del codigo coloco lo que me dijiste?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Gracias
>>>>>>>>>>>>>>> Diego herrera


>>>>>>>>>>>>>>>> On Thursday, October 23, 2008 9:38 PM H?ctor Miguel wrote:

>>>>>>>>>>>>>>>> hola (como sea que te llames), !
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>

>>>>>>>>>>>>>>>> ya probaste (segun el mensaje inmediato anteiror) a abrir el *.TXT de la manera tradicional ?
>>>>>>>>>>>>>>>> (menu) archivo / abrir / archivos de texto... (etc. etc. etc.
>>>>>>>>>>>>>>>> PERO... usando la grabadora de macros mientras realizas este proceso ?
>>>>>>>>>>>>>>>> (y despues comentas que cambios necesitarias hacer sobre el codigo generado ?)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> saludos,
>>>>>>>>>>>>>>>> hector.


>>>>>>>>>>>>>>>>>>> On Friday, October 24, 2008 8:50 PM H?ctor Miguel wrote:

>>>>>>>>>>>>>>>>>>> hola, Diego !
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> gracias a ti, por el "feed-back" ;)
>>>>>>>>>>>>>>>>>>> y ya puedes usar -al menos- dos formas para alcanzar tu objetivo ;)
>>>>>>>>>>>>>>>>>>>

>>>>>>>>>>>>>>>>>>> saludos (desde M?xico)
>>>>>>>>>>>>>>>>>>> hector.


>>>>>>>>>>>>>>>>>>>>> On Monday, October 27, 2008 10:24 PM H?ctor Miguel wrote:

>>>>>>>>>>>>>>>>>>>>> hola, Diego !
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> (como veras...) no se puede apreciar donde inicia "cada parte" del *.TXT (cuantas columnas son)
>>>>>>>>>>>>>>>>>>>>> por que no "subes" un ejemplo del archivo de texto en algun servidor publico/gratuito/... -???-
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> saludos,
>>>>>>>>>>>>>>>>>>>>> hector.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> __ OP __


>>>>>>>>>>>>>>>>>>>>> Submitted via EggHeadCafe - Software Developer Portal of Choice
>>>>>>>>>>>>>>>>>>>>> Assemblies in Folder Debug Build Checker
>>>>>>>>>>>>>>>>>>>>> http://www.eggheadcafe.com/tutorials/aspnet/d7de5fe1-6155-4e81-96e1-9806fd69d760/assemblies-in-folder-debug-build-checker.aspx

marcos borges

unread,
Aug 31, 2010, 2:30:24 AM8/31/10
to

>>>>>>>>>>>>>>>>>>>>> On Monday, October 27, 2008 10:24 PM H?ctor Miguel wrote:

>>>>>>>>>>>>>>>>>>>>> hola, Diego !
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> (como veras...) no se puede apreciar donde inicia "cada parte" del *.TXT (cuantas columnas son)
>>>>>>>>>>>>>>>>>>>>> por que no "subes" un ejemplo del archivo de texto en algun servidor publico/gratuito/... -???-
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> saludos,
>>>>>>>>>>>>>>>>>>>>> hector.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> __ OP __


>>>>>>>>>>>>>>>>>>>>>> On Tuesday, August 31, 2010 2:28 AM marcos borges wrote:

>>>>>>>>>>>>>>>>>>>>>> Sub Abrir_y_DividirEnComumnas()
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 'abre un archivo de texto en Excel, divide en columnas
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 'hay que poner el tipo de delimitador (en este caso 'Space')
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 'dimensiones
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Dim strNombreArchivo
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 'di?logo para abrir archivo
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> strNombreArchivo = Application.GetOpenFilename
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> If strNombreArchivo = False Then Exit Sub
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 'abrir el archivo y dividir en columnas
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Workbooks.OpenText _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Filename:=strNombreArchivo, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Origin:=xlWindows, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> StartRow:=1, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> DataType:=xlDelimited, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> TextQualifier:=xlDoubleQuote, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> ConsecutiveDelimiter:=False, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Tab:=False, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Semicolon:=False, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Comma:=False, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Space:=True, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Other:=False, _
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> FieldInfo:=Array(1, 1)
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> End Sub

>>>>>>>>>>>>>>>>>>>>>> Submitted via EggHeadCafe - Software Developer Portal of Choice

>>>>>>>>>>>>>>>>>>>>>> Win a free Professional license of CodeSmith Generator 5.2!
>>>>>>>>>>>>>>>>>>>>>> http://www.eggheadcafe.com/tutorials/aspnet/32aeed64-8518-4bd0-9614-e82b5d3ab3a4/win-a-free-professional-license-of-codesmith-generator-52.aspx

0 new messages