Exportar planilla a texto

Hola! Tengo una planilla de la siguiente forma:
        A B C D E
1  Campo1          Campo2           Camp3
2  Valor Camp1  Valor Camp2     Valor Camp3
3  Campo4: ValorCamp4       
4  Campo5:  ValorCamp5
5  Campo6          Campo7              Campo8          Campo9         Campo10
6  Valor 6            valor7                 empty              valor9            valor10
7  Valor 6            Valor7                 empty              Valor9            Valor10
8  n valor            n valor                n valor              n valor           valor n
El problema que tengo es que al gaurdarlo como txt (necesito este formato porque este archivo lo lee un equipo genético) no me respeta la ubicación de los campos 7, 8, 9 y 10 y entonces no me lo reconce el equipo...
Que se puede hacer desde código para poder solucionar este problema!
Muchas gracias
Sdos

1 Respuesta

Respuesta
1
Cuando exportas un archivo a texto plano tienes dos opciones: que los campos sean delimitados o que sen de longitud fija.
Para el primer caso, tus campos debe estar separados por algún carácter especial (delimitador), como pueden ser: la coma, el punto y coma, etc. Excel te exportará el archivo teniendo en cuenta esta condición.
En caso de ser registros de longitud fija, cada campo ocupa el mismo número de caracteres en todos los registros. Es decir, si el campo 1 tiene 5 caracteres para un registro, tendrá 5 para todos los registros. Los caracteres restantes se rellenan con espacios.
En principio, debería ser suficiente con indicarle a Excel de que tipo de registros se trata, en el momento de guardar (exportar).
Si lo anterior no es suficiente, tendrías que usar funciones de archivos de bajo nivel en VBA.
Estas funciones escriben la información, directamente, a un archivo plano.
Te doy ejemplo de algunas de estas funciones:
Write, WriteLn, Print, Open, etc.
Si necesitas más aclaraciones me cuentas.
Hola, gracias por tu ayuda! Lo de el ancho fijo de las columnas me sirvió, pero después de probar varias veces la lectura del txt me di cuenta que en realidad solo debo exportar al txt el rango de datos... voy a probar hacerlo desde codigo; si de todas formas puedes echarme una mano te lo agradezco
Sdos
Me alegra que los hayas resuelto. De todos modos, podemos intentar con la otra alternativa.
Sin embargo, no olvides finalizar la pregunta y calificar, cuando estés satisfecho.
Espero
Ok, gracias por tu interés, me podrías armar un ejemplo de como pasar datos desde excel a un txt a posiciones establecidas utilizando las funciones de bajo nivel que me citastes!
Muchas gracias
sdos
Supongamos que tienes estos datos en una hoja de Excel (a partir de la celda A1)
A 1 x 21-Ene
B 2 y 25-Abr
C 3 z 12-Jun
Este código produce como salida un archivo plano.
Option Explicit
Sub ExportPlainData()
Dim FileName As String
Dim nRows As Integer
Dim nColumns As Integer
Dim i As Integer
Dim j As Integer
FileName = "C:\Temp\Pruebas.txt"
Open FileName For Output As #1
nRows = Range("a1").CurrentRegion.Rows.Count
nColumns = Range("a1").CurrentRegion.Columns.Count
For i = 1 To nRows
For j = 1 To nColumns
Write #1, Cells(i, j).Value;
Next
Write #1,
Next
Close #1
End Sub
Lo demás son detalles del formato de salida que puedes controlar utilizando Write o Print.
Suerte.
Hola: Mira probé tu rutina y anda genial, solo que también me imprime los valores entre comillas y separados por comas y para mi problema así no me sirven. También quisiera saber si se puede controlar de alguna forma que por ejemplo los datos los escriba en el txt a cierta distancia del margen osea como controlar la posición del writeln si existe en VBA una especie de gotoxy si es que existe o como se pude hacer de otra forma
Sdos
Gracias
El write escribe los valores entre comillas, pero el print no.
Respecto a la posición de escritura existen varias opciones.
-Utiliza la función Space. Puede ser algo así:
   Print #1, space(20), campo1, campo2
-Imprime un TAB.
   Print #1, chr(8), campo1, campo2
Eso debe resolver tu inquietud.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas