Exportar txt delimitado por comas...

Tengo que exportar datos de un archivo excel con delimitadores de comas, pero al darle a la opción guardar como en excel 2003, me salen puntos y comas tal que así al abrislo con el bloc de notas
n;1;0;0;0
n;2;0.344;20.744;-12.954
n;3;-0.6305;20.744;-0.6565
n;4;0.5;0;-0.861
;;;;
;;;;
¿Existe alguna macro que lo haga?

1 Respuesta

Respuesta
1
Suele pasar por el separador de listas que tienen los regional settings.
Puedes hacer un programa en VBA y codificarlo a piñon, pero si es algo que haces de vez en cuando lo mejor es que lo dejes como esta y luego hagas un Find&Replace con el notepad para cambiar los ; por, eso no tarda nada.
Por cierto ¡Ojo con mezclar separadores!. Si vas a pasarlo a CSV procura que ningún número tenga formato si no te dará problemas con los ',' de los decimales.
Gracias por la respuesta!
Impresionante la rapidez...
He rebuscado internet y he encontrado en http://www.mcgimpsey.com/excel/textfiles.html    esta macro que lo hace:
Public Sub CharacterSV()
        Const DELIMITER As String = ","
        Dim myRecord As Range
        Dim myField As Range
        Dim nFileNum As Long
        Dim sOut As String
        nFileNum = FreeFile
        Open "Test.txt" For Output As #nFileNum
        For Each myRecord In Range("A1:A" & _
                    Range("A" & Rows.Count).End(xlUp).Row)
            With myRecord
                For Each myField In Range(.Cells, _
                        Cells(.Row, Columns.Count).End(xlToLeft))
                    sOut = sOut & DELIMITER & myField.Text
                Next myField
                Print #nFileNum, Mid(sOut, 2)
                sOut = Empty
            End With
        Next myRecord
        Close #nFileNum
    End Sub
¿Se podría modificar para que en caso de encontrarme un símbolo tipo "!" en vez de poner una coma me pusiera un espacio de tabulación o un numero determinado de espacios?
Ejemplo:
Tabla
               A     B     C     D
               n     1     0     !COORDENADA X
En el archivo de texto:
n,1,0           !COORDENADA X
No tengo tantos conocimietnos de macros como para saber donde tocar.
¿Alguna sugerencia?
Gracias.
Podrías tocar para añadir la lógica que quieras, pero sinceramente, si no estas cómodo con la programación intenta resolver en Excel todo lo que puedas. Esa tranformación la puedes hacer en una hoja auxiliar como paso previo a la exportación.
También puedes resolver todas esas transformaciones después en el archivo de texto, hay muchos programas que se usan para eso, son muy potentes y te van a ir mejor, mira :http://www.abacre.com/afr/ por ejemplo.
Si al final decides modificar la lógica tienes que cambiar esta parte del código:
'Primero defines una variable para trastear con la información
dim pTexto as string 
For Each myField In Range(.Cells, _
                        Cells(.Row, Columns.Count).End(xlToLeft))
if instr(myfield.text,1,"!")>1 then ' As localizado el caracter
ptexto=" alo que quieras & myfield.text & " lo que otro quieras"
elseif otra condicion then
pTexto=otra cosa
else
pTexto=myfield.text ' lo dejamos todo igual
end if
                    sOut = sOut & DELIMITER &ptexto
                Next myField
Pero sinceramente todo lo que puedas hacer en Excel antes que en VBa mejor, y si no mejor 3 F&R en el notepad que todo esto, luego empiezan los problemas con los caracteres extraños, etc.. y salvo que sea algo que tengas que hacer muy frecuentemente no suele merecer la pena el trabajo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas