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

17/09/2007 - 23:22 por Pacf | Informe spam
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.

Preguntas similare

Leer las respuestas

#6 Pacf
19/09/2007 - 01:04 | Informe spam
"Pacf" escribió:



"Héctor Miguel" escribió:

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

>
Respuesta Responder a este mensaje
#7 Héctor Miguel
19/09/2007 - 03:09 | Informe spam
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.
Respuesta Responder a este mensaje
#8 Pacf
19/09/2007 - 16:20 | Informe spam
"Héctor Miguel" escribió:

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.



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



Respuesta Responder a este mensaje
#9 Pacf
19/09/2007 - 16:30 | Informe spam
"Pacf" escribió:



"Héctor Miguel" escribió:

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

>
>
Respuesta Responder a este mensaje
#10 Héctor Miguel
19/09/2007 - 19:56 | Informe spam
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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida