como crear un archivo txt de un bloque de una planilla

12/10/2006 - 17:04 por Anibal | Informe spam
Hola a todos, tengo una planilla de calculo que despues de varios
calculos dan como resultado en una hoja, una columna con muchas filas
de datos.
Depende de los calculos la cantidad de filas que tienen datos, las
demas filas la formula da como resultado "".
Quisiera saber como generar un archivo txt solo con las filas que
tienen datos.
Ej:
A
1 (formula) da como resultado = 1.562
2 (formula) da como resultado = 0
3 (formula) da como resultado = linea
4 (formula) da como resultado = 2.000
5 (formula) da como resultado = Texto
6 (formula) da como resultado = ""
7 (formula) da como resultado = ""
8 (formula) da como resultado = ""
9 (formula) da como resultado = ""
10(formula) da como resultado = ""


El archivo txt tendría que quedar así:

1.562
0
linea
2.000
Texto

Tengo una macro que graba la hoja como txt pero guarda las filas que no
tienen datos como lineas vacias.

Hay alguna forma?, muchas gracias!

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
12/10/2006 - 22:45 | Informe spam
hola, Ruben !

... tengo una planilla... que despues de varios calculos dan como resultado... una columna con muchas filas de datos.
Depende de los calculos la cantidad de filas que tienen datos, las demas filas la formula da como resultado "".
Quisiera saber como generar un archivo txt solo con las filas que tienen datos [...]
Tengo una macro que graba la hoja como txt pero guarda las filas que no tienen datos como lineas vacias...



prueba un procedimiento que 'haga' lo siguiente
-> asumiendo que se trata de la hoja 'activa'
-> que la columna -con datos- es 'A'
-> que desde la celda 'A1' SI existen datos 'validos'
-> y que a partir de la primer celda con 'resultado' -> "" las siguientes celdas contienen... 'lo mismo' -?-

1) copiar 'la hoja' [activa ?] a un libro nuevo
2) 'localizar' la primer celda [semi]-'vacia' y extender el rango hasta la ultima celda [sem]-'vacia'
3) 'limpiar' [en el libro nuevo] el rango de celdas NO 'validas'
4) guardar el libro [activo] como archivo de texto [aqui utiizas tu procedimiento -quizas 'adaptado' ?-]

te paso un ejemplo al final ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

en un modulo de codigo general ==
Sub Eliminar_vacios_consecutivos()
ActiveSheet.Copy
With Cells.Find(Empty, [a1], , , xlByColumns)
Range(.Address & "." & .End(xlDown).Address).Clear
End With
Debug.Print ActiveSheet.UsedRange.Rows.Count
' aqui grabas el libro ACTIVO como archivo de texto... ;) '
End Sub
Respuesta Responder a este mensaje
#2 Anibal
13/10/2006 - 01:22 | Informe spam
hola, Ruben !

> ... tengo una planilla... que despues de varios calculos dan como resultado... una columna con muchas filas de datos.
> Depende de los calculos la cantidad de filas que tienen datos, las demas filas la formula da como resultado "".
> Quisiera saber como generar un archivo txt solo con las filas que tienen datos [...]
> Tengo una macro que graba la hoja como txt pero guarda las filas que no tienen datos como lineas vacias...

prueba un procedimiento que 'haga' lo siguiente
-> asumiendo que se trata de la hoja 'activa'
-> que la columna -con datos- es 'A'
-> que desde la celda 'A1' SI existen datos 'validos'
-> y que a partir de la primer celda con 'resultado' -> "" las siguientes celdas contienen... 'lo mismo' -?-

1) copiar 'la hoja' [activa ?] a un libro nuevo
2) 'localizar' la primer celda [semi]-'vacia' y extender el rango hasta la ultima celda [sem]-'vacia'
3) 'limpiar' [en el libro nuevo] el rango de celdas NO 'validas'
4) guardar el libro [activo] como archivo de texto [aqui utiizas tu procedimiento -quizas 'adaptado' ?-]

te paso un ejemplo al final ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

en un modulo de codigo general ==>
Sub Eliminar_vacios_consecutivos()
ActiveSheet.Copy
With Cells.Find(Empty, [a1], , , xlByColumns)
Range(.Address & "." & .End(xlDown).Address).Clear
End With
Debug.Print ActiveSheet.UsedRange.Rows.Count
' aqui grabas el libro ACTIVO como archivo de texto... ;) '
End Sub



Hola Héctor:
Antes que nada te agradezco tu atención y amabilidad

Yo tengo en una celda de otra hoja el numero de filas hasta donde hay
datos
suponé que sea 1400 el valor de esa celda, en la hoja donde estan los
resultados
que quiero grabar como txt hay 5000 o mas filas con formulas, a partir
de la fila 1401
me da como resultado ="" o sea que en las celdas no se ve nada.
Cuando la macro guarda la hoja como txt el archivo tiene 5000 o mas
lineas de las cuales
solo 1400 tienen datos.

Yo entiendo muy poco de códigos, copié el código que me enviaste
pero me sigue guardando filas
vacias al final.

Muchas gracias
Respuesta Responder a este mensaje
#3 Héctor Miguel
13/10/2006 - 03:15 | Informe spam
hola, Ruben ?

... tengo en una celda de otra hoja el numero de filas hasta donde hay datos
supone que sea 1400 el valor de esa celda, en la hoja donde estan los resultados que quiero grabar como txt
hay 5000 o mas filas con formulas, a partir de la fila 1401 me da como resultado ="" o sea que en las celdas no se ve nada.
Cuando la macro guarda la hoja como txt el archivo tiene 5000 o mas lineas de las cuales solo 1400 tienen datos.
... entiendo muy poco de codigos, copie el codigo que me enviaste pero me sigue guardando filas vacias al final.



disculpa... :( me tome la 'atribucion' de suponer que los datos estaban ya convertidos a constantes [no formulas mas] :(
[por lo que] el metodo -> Cells.Find(Empty. NO funciona cuando en las celdas continuan las formulas 'tal cual' :D

prueba con las siguientes 'adaptaciones' y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

en un modulo de codigo general ==
Sub Eliminar_vacios_consecutivos()
ActiveSheet.Copy
[a:a].Copy: [a1].PasteSpecial xlPasteValues: [a1].Select
With Cells.Find(Empty, [a1], , , xlByColumns)
Range(.Address & ":" & .End(xlDown).Address).Clear
End With
Debug.Print ActiveSheet.UsedRange.Rows.Count
' aqui grabas el libro ACTIVO como archivo de texto... ;) '
End Sub
Respuesta Responder a este mensaje
#4 Anibal
13/10/2006 - 12:02 | Informe spam
hola, Ruben ?

> ... tengo en una celda de otra hoja el numero de filas hasta donde hay datos
> supone que sea 1400 el valor de esa celda, en la hoja donde estan los resultados que quiero grabar como txt
> hay 5000 o mas filas con formulas, a partir de la fila 1401 me da como resultado ="" o sea que en las celdas no se ve nada.
> Cuando la macro guarda la hoja como txt el archivo tiene 5000 o mas lineas de las cuales solo 1400 tienen datos.
> ... entiendo muy poco de codigos, copie el codigo que me enviaste pero me sigue guardando filas vacias al final.

disculpa... :( me tome la 'atribucion' de suponer que los datos estaban ya convertidos a constantes [no formulas mas] :(
[por lo que] el metodo -> Cells.Find(Empty. NO funciona cuando en las celdas continuan las formulas 'tal cual' :D

prueba con las siguientes 'adaptaciones' y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

en un modulo de codigo general ==>
Sub Eliminar_vacios_consecutivos()
ActiveSheet.Copy
[a:a].Copy: [a1].PasteSpecial xlPasteValues: [a1].Select
With Cells.Find(Empty, [a1], , , xlByColumns)
Range(.Address & ":" & .End(xlDown).Address).Clear
End With
Debug.Print ActiveSheet.UsedRange.Rows.Count
' aqui grabas el libro ACTIVO como archivo de texto... ;) '
End Sub



Hola Héctor

Muchicimas gracias por ayudarme

Copie el código que me mandaste y lo ejecuté, parece que desde la
primera celda
que encuentra vacia borra todas las lineas siguientes.
Me olvidé comentarte que entre las 1400 ó X filas de datos que tengo
hay celdas que
la formula da como resultado celda vacia y necesito que queden asi.
Por eso te decía que en una celda de otra hoja tengo el número de
filas útiles, supone que
en la Hoja2 A1 esta el valor de las filas que interesan hay forma que
el código seleccione desde
la fila siguiente?

Y otro problemita el código que graba la hoja es este:

Application.Goto Reference:="Dxf"
ActiveWorkbook.SaveAs Filename:=Sheets("Hoja1").Range("K1").Text,
FileFormat:= _
xlTextPrinter, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:=Sheets("Hoja1").Range("K3").Text,
FileFormat:= _
xlNormal, CreateBackup:=False

Al estar en otro libro parece que no encuentra el nombre que le dará
al archivo, ese nombre
es variable según el contenido de los datos.

Espero no molestarte mucho, disculpa mi ignorancia.
Te agradesco tu ayuda.
Respuesta Responder a este mensaje
#5 Héctor Miguel
13/10/2006 - 19:20 | Informe spam
hola, Ruben ?

__ 1 __
... el codigo que me mandaste... parece que desde la primera celda que encuentra vacia borra todas las lineas siguientes.



__ 2 __
... entre las 1400 o X filas de datos que tengo hay celdas que la formula da como resultado celda vacia y necesito que queden asi.
... tengo el numero de filas utiles... en la Hoja2 A1 esta el valor de las filas que interesan
hay forma que el codigo seleccione desde la fila siguiente?



__ 3 __
... el codigo que graba la hoja es este:


Application.Goto Reference:="Dxf"
ActiveWorkbook.SaveAs Filename:=Sheets("Hoja1").Range("K1").Text, FileFormat:= _
xlTextPrinter, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:=Sheets("Hoja1").Range("K3").Text, FileFormat:= _
xlNormal, CreateBackup:=False
Al estar en otro libro parece que no encuentra el nombre que le dara al archivo, ese nombre es variable segun el contenido de los datos.



-> te comento mis 'supuestos/asunciones/...' para que me indiques en cual/es estoy 'equivocando' :))

1) creia yo -segun tus consultas previas- que precisamente querias 'evitar' las filas 'quasi'-vacias 'posteriores' al ultimo dato 'real' -?-

2) con esta 'ampliacion' de dudas... [parece que]... de las filas 'quasi'-vacias, algunas 'se quedan'... y otras... 'se van' -?-
por lo que supongo que existen otras columnas [con datos] donde no importa si la fila de las 'vacias'... sigue vacia -?-

3) para que el codigo que expones 'funcione'... si el 'ActiveWorkbook' NO es el que contiene las macros...
necesitas ante-poner el objeto-libro [que supongo es donde esta la hoja y rango que determina el nombre] p.e.
de: -> ActiveWorkbook.SaveAs Filename:=Sheets("Hoja1").Range("K1").Text, FileFormat:= _ [etc. etc. etc.]
a: -> ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Sheets("Hoja1").Range("K1").Text, FileFormat:= _ [etc. etc. etc.]

3-a) si la intencion es 'construir' un nuevo libro con -solo- los datos 'necesarios'...
puedes copiar la hoja completa a un libo nuevo con una sola instruccion [p.e.] -> ActiveSheet.Copy
eliminar las filas posteriores a la indicada por la ceda que determina cual es 'la ultima'
y continuar con el proceso de los 'guardar como...' [no olvides los comentarios del punto anterior] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida