Problemas con comas y puntos al guardar de excel a un archivo txt mediante VB

08/02/2008 - 14:40 por Mclaud | Informe spam
Saludos,

Hemos creado una macro para poder procesar rapidamente unos archivos
de texto tabulado mediante espacios. Contienen varias columnas de
números, en las que los decimales están marcados por comas. El codigo
que utilizamos para abrir los documentos es el siguiente:

Workbooks.OpenText Filename:= _
"c\origen.txt"_
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited,
TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True,
Semicolon:=False, _
Comma:=False, Space:=True, Other:=False,
FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6,
1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1),
Array(13, 1)), _
DecimalSeparator:=",", ThousandsSeparator:=".",
TrailingMinusNumbers:=True

A continuación realizamos varias operaciones de borrado de columnas,
nunca tocamos los números en si. Finalmente guardamos lo realizado
mediante el siguiente codigo.

ActiveWorkbook.SaveAs Filename:="c\prueba.txt",
FileFormat:=xlText, CreateBackup:=False

La macro corre perfectamente, realizando las operaciones esperadas y
guardando lo obtenido. El problema está en que al guardar el archivo
como txt convierte las comas que señalan los decimales en puntos.
Curiosamente, si detenemos la macro justo antes de guardar el archivo
y lo hacemos manualmente SÍ que guarda las comas correctamente.

Hemos comprobado que la configuración regional del Excel y del equipo
es la correcta. También se ha usado la macro en otros ordenadores, sin
que cambie el problema.

Dado que tenemos que trabajar con muchos archivos no se hace práctico
entrar a sustituir el punto por la coma mediante el block de notas.

¿Alguien tiene idea de donde puede estar produciendose el error?.

Muchas gracias.
 

Leer las respuestas

#1 Héctor Miguel
08/02/2008 - 23:33 | Informe spam
hola, !

dado que las acciones por vba son (generalmente) usando convencionalismos US-Centric (fechas, separdores, etc.)
prueba cambiando el tipo de archivo en la salida al grabarlo (p.e.) a: FileFormat:=xlTextPrinter

hay mas tipos de formatos para vba, consulta en la ayuda en linea {F1} por si necesitaras probar con mas de uno -?-

saludos,
hector.

__ la consulta original __
Hemos creado una macro para poder procesar rapidamente unos archivos de texto tabulado mediante espacios.
Contienen varias columnas de numeros, en las que los decimales estan marcados por comas.
El codigo que utilizamos para abrir los documentos es el siguiente:
Workbooks.OpenText Filename:= _
"c\origen.txt"_
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1)), _
DecimalSeparator:=",", ThousandsSeparator:=".", TrailingMinusNumbers:=True
A continuación realizamos varias operaciones de borrado de columnas, nunca tocamos los numeros en si.
Finalmente guardamos lo realizado mediante el siguiente codigo.
ActiveWorkbook.SaveAs Filename:="c\prueba.txt", FileFormat:=xlText, CreateBackup:=False
La macro corre perfectamente, realizando las operaciones esperadas y guardando lo obtenido.
El problema esta en que al guardar el archivo como txt convierte las comas que senalan los decimales en puntos.
Curiosamente, si detenemos la macro justo antes de guardar el archivo y lo hacemos manualmente SI que guarda las comas correctamente.
Hemos comprobado que la configuracion regional del Excel y del equipo es la correcta.
Tambien se ha usado la macro en otros ordenadores, sin que cambie el problema.
Dado que tenemos que trabajar con muchos archivos no se hace practico entrar a sustituir el punto por la coma mediante el block de notas.
Alguien tiene idea de donde puede estar produciendose el error?.

Preguntas similares