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.

Preguntas similare

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

Respuesta Responder a este mensaje
#2 guarracuco
17/12/2005 - 02:47 | Informe spam
Daniel, es grato saber que te ayudó en algo; fíjate, hay algo que no termino
de entender (cada programador es un mundo...) por qué declaras una base de
datos nueva o el arreglo; segun entendí, la información está en unahoja de
excel; si es así, no es necesario cargarla en un arreglo(o matriz), ya que la
instruccion UsedRange se encarga de leer esta información. Por lo que veo, no
entendí del todo tu problema.
si puedo ayudarte con gusto lo haré.
atte carlos
(recuerda que es bueno 'votar' si una solucion te sirve; de esta manera nos
motivamos unos a otros para seguir colaborando)
guarracuco/venezuela


"Daniel G. Samborski" wrote:

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
>



Respuesta Responder a este mensaje
#3 guarracuco
17/12/2005 - 02:47 | Informe spam
Daniel, prueba esta manera de escribir una linea en el archivo de texto
For i = 1 To rng.Count
a.writeline (rng.Cells(i, 1) & vbTab _
& rng.Cells(i, 2) & vbTab _
& rng.Cells(i, 3))
Next

guarracuco/venezuela
Respuesta Responder a este mensaje
#4 Daniel G. Samborski
17/12/2005 - 05:16 | Informe spam
Hola Guarracuco, mira me sigue con el mismo problema.
Si la hoja de excel tiene dos lineas la variable rng.Coun me dice que tiene
8, esto por que es...

Watch : : rng.Count : 8 : Variant/Long : Módulo1.boton

Deberia valer 2 ya que son dos lineas.
Tenes idea del porque hace esto.


Daniel.


"guarracuco" escribió en el mensaje
news:
Daniel, prueba esta manera de escribir una linea en el archivo de texto
For i = 1 To rng.Count
a.writeline (rng.Cells(i, 1) & vbTab _
& rng.Cells(i, 2) & vbTab _
& rng.Cells(i, 3))
Next

guarracuco/venezuela

Respuesta Responder a este mensaje
#5 Daniel G. Samborski
17/12/2005 - 05:27 | Informe spam
Te explico lo que quiero hacer.
Excel lo utilizo para guardar una lista, digamos de amigos.

Nombre, apellido, direccion, Telefono.

Y esta lista la quiero poner en internet para que sea consultada como una
base de datos.
El problema es que no utilizo un servidor que trabaje con BD, no programo en
PHP y en asp con sqlserver no hay nada que sea gratuito.
Tampoco lo puedo hacer en access.
El sitio es simplemente un sitio en html, nada mas que eso. Nada de paginas
dinamicas.
Y utilizare un codigo en JS que lee de un archivo de texto como si fuera una
base de datos, script me permite mostrar en la pagina los datos como si se
tratara de una BD.
Por eso necesito que el archivo tenga esa estructura en particular.

Mas que nada lo que quiero hacer es simular una BD en un sitio que es hecho
en html simplemente.
Para ingresar deberas tener nombre de usuario y contraseña y habra una base
de datos.

Basicamente es eso lo que deseo hacer.

Por el momento ya he solucionado ciertos problemas, aunque me faltan otros.
Este es uno de ellos.
Es que queria que el archivo de la BD se genere de forma automatica
directamente desde excel.
Para que con un solo boton esta se mantenga actualizada, luego subo este
archivo .TXT al sitio y listo.


Espero haber sido claro y que se entienda lo que deseo hacer.

Y quiero agradecerte por tomarte la molestia de ayudarme.

Daniel.


"guarracuco" escribió en el mensaje
news:
Daniel, es grato saber que te ayudó en algo; fíjate, hay algo que no
termino
de entender (cada programador es un mundo...) por qué declaras una base de
datos nueva o el arreglo; segun entendí, la información está en unahoja de
excel; si es así, no es necesario cargarla en un arreglo(o matriz), ya que
la
instruccion UsedRange se encarga de leer esta información. Por lo que veo,
no
entendí del todo tu problema.
si puedo ayudarte con gusto lo haré.
atte carlos
(recuerda que es bueno 'votar' si una solucion te sirve; de esta manera
nos
motivamos unos a otros para seguir colaborando)
guarracuco/venezuela


"Daniel G. Samborski" wrote:

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
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida