Pasar una hoja en formato txt

16/12/2005 - 16:06 por Daniel G. Samborski | Informe spam
Hola, lo que necesito hacer no se si se puede.

Tengo una hoja con los siguientes datos.

idPersona nom direccion telefono
1 Perez Roberto Av. Francias 1122 3423453
2 Sanchez Roberto J. B. Justo 4334 8453453

Y necesitaria que al pulsar un boton guardar estos datos, que se le iran
agregando personas, se guarde en un archivo con el siguiente formato.

Primero se debe guardad la cabecera de esta forma

var DBTest = new Database ("DBTest");
DBTest.CreateTable("Dades",Array("idPersona","nom","direccion","telefono"));

Luego los datos debajo...

DBTest.Insert("Dades",Array(1,"Perez Roberto","Av. Francias 1122",
"3423453"));
DBTest.Insert("Dades",Array(2,"Sanchez Roberto","J. B. Justo 4334",
"8453453"));


En el archivo deberia quedar de la siguiente manera...

var DBTest = new Database ("DBTest");
DBTest.CreateTable("Dades",Array("idPersona","nom","direccion","telefono"));
DBTest.Insert("Dades",Array(1,"Perez Roberto","Av. Francias 1122",
"3423453"));
DBTest.Insert("Dades",Array(2,"Sanchez Roberto","J. B. Justo 4334",
"8453453"));

Seria posible hacer algo como esto.

El archivo en donde se guarda estos datos podria llamarse datos.txt


Daniel.
 

Leer las respuestas

#1 Daniel G. Samborski
16/12/2005 - 23:42 | Informe spam
Hola Guarracuco, gracias con una pequeña modificacion ase lo que necesito.
El codigo lo agregue en un boton.

Aqui pongo el codigo para que lo veas y me puedas ayudar a resolver un
pequeño problema.

Sub boton()
Set rng = Worksheets("hoja1").UsedRange
Dim fs, a
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\listado.txt", True)
a.writeline ("var DBTest = new Database (""DBTest"");")
a.write ("DBTest.CreateTable(""Dades"",Array(""")
a.write (rng.Cells(1, 1))
a.write (""",""")
a.write (rng.Cells(1, 2))
a.write (""",""")
a.write (rng.Cells(1, 3))
a.write (""",""")
a.write (rng.Cells(1, 4))
a.write ("""));")
a.writeline

For i = 2 To rng.Count
a.write ("DBTest.Insert(""Dades"",Array(")
a.write (rng.Cells(i, 1))
a.write (",""")
a.write (rng.Cells(i, 2))
a.write (""",""")
a.write (rng.Cells(i, 3))
a.write (""",""")
a.write (rng.Cells(i, 4))
a.write ("""));")
a.writeline
Next
a.Close

End Sub

El problema esta en que al final del archivo le agrega lineas extras.
Si tengo una sola linea, al final le agrega 6 lineas de mas...

var DBTest = new Database ("DBTest");
DBTest.CreateTable("Dades",Array("id","Nombre","Direccion","Telefono"));
DBTest.Insert("Dades",Array(1,"Jose","Alverdi 1234","234532"));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));

Yo necesitaria que solo se agreguen las lineas que tengan contenido.

En este caso solo hay 2 lineas, el encabezado y un alinea con datos.
Si hubiera 3 lineas con datos se deberia ingresar la linea del encabezado y
3 lineas con datos.
En el ejemplo anterior deberia estar de este modo el archivo.

var DBTest = new Database ("DBTest");
DBTest.CreateTable("Dades",Array("id","Nombre","Direccion","Telefono"));
DBTest.Insert("Dades",Array(1,"Jose","Alverdi 1234","234532"));

Ya que solo tiene el encabezado y una linea de datos.
Fijate si me podes decir el porque me pone estas lineas de mas.

DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));
DBTest.Insert("Dades",Array(,"","",""));


Daniel.

"guarracuco" escribió en el mensaje
news:
Daniel, entendí lo siguiente:
tienes informacion en una hoja de excel y deseas crear un archivo de texto
a partir de ésta.


El siguiente procedimiento bien puede estar en el evento click de un
boton.
Asumo una "hoja1" donde tienes esa informacion (solo esa informacion)

1-Se toma el rango utilizado (UsedRange)
2-Se realiza un bucle hasta la última línea del rango

Set rng = Worksheets("hoja1").UsedRange
Dim fs, a
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\listado.txt", True)
For i = 1 To rng.Count
a.writeline (rng.Cells(i, 1))
Next
a.Close
espero te dé luces en tu solución.
atte carlos

guarracuco/venezuela

Preguntas similares