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

Al importar texto el separador decimal de números es un punto en v

3,172 views
Skip to first unread message

Pacf

unread,
Sep 17, 2007, 5:22:05 PM9/17/07
to
Al importar archivos de texto separados por comas, el separador decimal de
los números me sale un punto en vez de la coma en Excel 2007. En Excel XP
importa los números con la coma de separador decimal. No entiendo el porque
en Excel 2007 los importa con un punto como separador decimal, con lo que la
importación no sirve para nada.

Héctor Miguel

unread,
Sep 18, 2007, 12:52:38 AM9/18/07
to
hola, !

> Al importar archivos de texto separados por comas, el separador decimal... me sale un punto en vez de la coma en Excel 2007.
> En Excel XP importa los numeros con la coma de separador decimal.
> No entiendo el porque en Excel 2007 los importa con un punto como separador decimal, con lo que la importacion no sirve para nada.

1) este es un tema de configuraciones regionales diferentes [asumiendo que tambien hablamos de equipos distintos -?-] ...
y/o de que alguno de los exceles esta usando separadores diferentes a los de la configuracion regional de *su* equipo -?-

2) revisa como se ven separados los datos de *ese* archivo [p.e.] si lo abres con el bloc de notas -?-

3) si tu archivo esta *realmente* separado POR COMAS... [teoricamente] significa que el separador de listas y argumentos es la coma
[y por ende, es tambien el separador de miles, por lo que le toca al punto servir como separador de decimales]
al menos... para la configuracion regional de la maquina desde la que fue *generado* dicho archivo *.CVS -?-

comentas [si detectas] algun detalle mas... *significativo* ?
saludos,
hector.


Pacf

unread,
Sep 18, 2007, 11:22:03 AM9/18/07
to

"Héctor Miguel" escribió:

Pacf

unread,
Sep 18, 2007, 11:32:05 AM9/18/07
to

"Héctor Miguel" escribió:

Pacf

unread,
Sep 18, 2007, 11:32:02 AM9/18/07
to

"Héctor Miguel" escribió:

Hola Hector
Estoy usando Excel 2007 y Excel 2002 en el mismo equipo, por consiguiente la
configuracion regional es idéntica. Efectivamente el archvio de texto está
separado por comas, y en los números hay un punto decimal. Con Excel 2002
como tu dices para importar cambias la coma por el punto en opciones
avanzadas y lo importa correctamente con la coma decimal. Pero en Excel 2007
haciéndolo exactamente igual que en Excel 2002 lo importa con el punto
decimal los números con lo que la importación no vale para nada. Yo entiendo
que debe de ser un problema de Excel 2007 y que lo tendría que resolver
Microsoft, pero yo he estado ojeando por las páginas de Microsoft y no he
visto nada parecido a lo que me pasa a mí. Lógicamente he tenido que volver a
instalar Excel 2002 para poder importar.
Gracias por contestar.
Saludos Pacf
>
>

Héctor Miguel

unread,
Sep 18, 2007, 4:44:14 PM9/18/07
to
hola, (...) ?

> Estoy usando Excel 2007 y Excel 2002 en el mismo equipo, por consiguiente la configuracion regional es identica.
> Efectivamente el archvio de texto esta separado por comas, y en los numeros hay un punto decimal.


> Con Excel 2002 como tu dices para importar cambias la coma por el punto en opciones avanzadas

> y lo importa correctamente con la coma decimal. Pero en Excel 2007 haciendolo exactamente igual que en Excel 2002
> lo importa con el punto decimal los numeros con lo que la importacion no vale para nada.
> Yo entiendo que debe de ser un problema de Excel 2007 y que lo tendria que resolver Microsoft
> pero yo he estado ojeando por las paginas de Microsoft y no he visto nada parecido a lo que me pasa a mi.
> Logicamente he tenido que volver a instalar Excel 2002 para poder importar. Gracias por contestar...

[al parecer] efectivamente se trata de un *bug* en el dialogo de importar textos con separadores diferentes a US :-((
[en tanto es corregido en algun parche posterior] la sugerencia es usar una macro para la importacion del archivo de texto
puedes ver la conversacion y el ejemplo de la macro en: -> http://tinyurl.com/24sou6

saludos,
hector.


Pacf

unread,
Sep 18, 2007, 7:04:03 PM9/18/07
to

"Pacf" escribió:

> > Te adjunto una copia de los archivos de texto que yo importo: ABE,20070918,20.96,21.52,20.90,21.52,1462046, que son cotizaciones de bolsa. He copiado el macro que me dijiste y lo que me hace es importar los archivos de texto exactamente igual a una hoja de Excel, sin delimitarlos, por consiguiente no me vale. Excel 2000 y 2002 los importa correctamente delimitados y separados las cotizaciones por comas.
Gracias por contestar y si me puedes ayudar te lo agradecería,

Saludos, Pacf

> >

Héctor Miguel

unread,
Sep 18, 2007, 9:09:04 PM9/18/07
to
hola, (...) ?

> Te adjunto una copia de los archivos de texto que yo importo: ABE,20070918,20.96,21.52,20.90,21.52,1462046

> que son cotizaciones de bolsa. He copiado el macro que me dijiste y lo que me hace es importar los archivos de texto
> exactamente igual a una hoja de Excel, sin delimitarlos, por consiguiente no me vale.
> Excel 2000 y 2002 los importa correctamente delimitados y separados las cotizaciones por comas.

> Gracias por contestar y si me puedes ayudar te lo agradeceria...

1) he modificado mi configuracion regional para que utilice los siguientes separadores:
decimales = coma
miles = punto [esta configuracion esta ok ?]

2) he copiado el texto que adjuntas en un archivo .TXT y en otro .CSV -> ABE,20070918,20.96,21.52,20.90,21.52,1462046

3) he corrido en xl-2007 [nota el punto 1 anterior] una macro *basada* en la conversacion sugerida...
y me ha devuelto lo siguiente [en ambos tipos de archivos tanto para el .TXT como para el .CSV]:
-> ABE | 20070918 | 20,96 | 21,52 | 20,90 | 21,52 | 1462046
es lo anterior lo que necesitas ?

-> la macro es la siguiente:

Sub OpenTextFile()
Dim FName As Variant
' FName = Application.GetOpenFilename("Text files(*.txt),*.txt")
FName = Application.GetOpenFilename("Csv files(*.csv),*.csv")
If FName <> False Then
Workbooks.OpenText Filename:=FName, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Comma:=True, DecimalSeparator:=".", ThousandsSeparator:=",", TrailingMinusNumbers:=False
End If
End Sub

4) tambien he *corroborado* que el *bug* a que se refieren en dicha conversacion es:
a) despues de modificar al punto como separador decimal en el boton de opciones avanzadas [y aceptar el cambio]...
b) ANTES de pulsar el boton *continuar/finalizar*... -> REGRESA a pulsar el boton de *avanzadas* y...
-> notaras que los cambios NO SE REALIZARON... sigue usando los separadores de la configuracion regional *vigente* :-((

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.


Pacf

unread,
Sep 19, 2007, 10:20:01 AM9/19/07
to

"Héctor Miguel" escribió:

Hola hector,
He copiado el macro que me adjuntaste, el cual es igual que el que yo copie
anteriormente, pero me parece que me faltaba una coma a mí. En un principio
no me importaba, y he cambiado csv por txt en la cuarta fila del macro y me
lo importa correctamente con la coma como separador decimal. Pero me surge
otro pequeño problema, antes en Excel 2002 la fecha la importaba como AMD
quedándome así:18/09/2007, y ahora con el macro me toca ir a texto en
columnas para que la fecha me quede en formato AMD. Se podría agregar algo al
macro para que me importe la fecha en formato AMD para no tener que ir a
texto en columnas después.
Muchas gracias por tu colaboración.
Saludos, Pacf

>
>

Pacf

unread,
Sep 19, 2007, 10:30:06 AM9/19/07
to

"Pacf" escribió:

> texto en columnas después, y también se podría agregar algo al macro para que la primera fila importada sea la fecha y la segunda el símbolo sin cambiar los demás campos.
Muchas gracias por tu colaboración, y disculparme por mis pobres
conocimientos de macros.
Saludos, pacf
>
> >
> >

Héctor Miguel

unread,
Sep 19, 2007, 1:56:21 PM9/19/07
to
hola, (...) ?

> ... me surge otro pequeno problema... en Excel 2002 la fecha la importaba como AMD quedandome asi:18/09/2007
> ... con el macro me toca ir a texto en columnas para que la fecha me quede en formato AMD.
> ... agregar algo al macro para que me importe la fecha en formato AMD para no tener que ir a texto en columnas despues
> ... y... algo... para que la primera fila importada sea la fecha y la segunda el simbolo sin cambiar los demas campos.
> ... disculparme por mis pobres conocimientos de macros.

lo de tus *pobres* conocimientos de macros, no te lo puedo *disculpar* [no es dis/culpable] :-((
mas bien, te animo/invito/reto/... para que NO *los dejes ahi* :)) [y no soy quien para que te disculpes] :D

con relacion a completar la macro con las acciones que seguirias por el dialogo [que no funciona en el 2007]
puedes agregar una *matriz de matrices* con el tipo de conversion de datos para cada columna +/- como sigue:

considerando que tus datos originales aportan 7 columnas:
*esto*: ABE,20070918,20.96,21.52,20.90,21.52,1462046 se convierte en:


-> ABE | 20070918 | 20,96 | 21,52 | 20,90 | 21,52 | 1462046

a) tendrias que agregar parametros al argumento *FieldInfo:=Array(Array(col1,tipoX), Array(col2, tipoX), ... Array(col7,tipoX))*
considerando las siguientes constantes segun el tipo de datos a convertir para cada Array(col1 a col7
1 = xlGeneralFormat ->General
2 = xlTextFormat ->Texto
3 = xlMDYFormat -> Fecha en formato MDA
4 = xlDMYFormat -> Fecha en formato DMA
5 = xlYMDFormat -> Fecha en formato AMD
6 = xlMYDFormat -> Fecha en formato MAD
7 = xlDYMFormat -> Fecha en formato DAM
8 = xlYDMFormat -> Fecha en formato ADM
9 = xlSkipColumn -> Omitir la columna
10 = xlEMDFormat -> Fecha en formato EMD (se usan fechas de la era Taiwanesa)

b) con base en lo aterior, la macro que necesitas debe andar quedando +/- en lo siguiente:
-> de todas formas consulta por el metodo *OpenText* en la ayuda en linea de vba/excel -> {F1} :D

Sub OpenTextFile()
Dim FName As Variant
' FName = Application.GetOpenFilename("Text files(*.txt),*.txt")
FName = Application.GetOpenFilename("Csv files(*.csv),*.csv")
If FName <> False Then
Workbooks.OpenText Filename:=FName, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _

Tab:=False, Semicolon:=False, Comma:=True, DecimalSeparator:=".", ThousandsSeparator:=",", _
FieldInfo:=Array(Array(1, 1), Array(2, 5), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)), _
TrailingMinusNumbers:=False
Columns("b:b").Cut
Range("a1").Insert Shift:=xlToRight
End If
End Sub

saludos,
hector.


Pacf

unread,
Sep 19, 2007, 5:12:04 PM9/19/07
to

"Héctor Miguel" escribió:

> Hola Hector
Sinceramente eres genial, la macro funciona de maravilla como yo queria.
Otro problema que te comento que entiendo que no tiene solución es el
siguiente: yo pego las cotizaciones importadas con Excel a una base de datos
de un programa, hasta hace poco utilizaba Windows XP y la abría con Acces
2002, pues bien, ahora utilizo Windows Vista y no puedo abrir dicha base de
datos, en XP con Acces 2007 si la puedo abrir, con lo que he tenido que
instalar Acces 2000 en Vista para poder abrirla y poder pegar los datos. Yo
entiendo que debe de ser que Vista tiene mucha más seguridad que XP, pero
instalando Acces 2000 ó 2002 se soluciona.
Muy agredecido por tu amable ayuda, la cual me ahorrará mucho tiempo.
Saludos,
Pacf
>

0 new messages