crear archivo de texto

18/05/2006 - 17:25 por CarmenTorres.C | Informe spam
Hola de nuevo, a ver si hay alguien que me pueda echar una mano...
Tengo una serie de datos y necesito localizar los que sean "raros"
mediante una macro. Ahora, una vez que los tengo localizados querria
crear un archivo de texto incluyendo las filas correspondientes a los
"datos raros", o al menos alguna otra referencia a ellos.
En definitiva, necesito, mediante macro, crear un archivo de texto y
escribir dentro la informacion de algunas celdas.
No se si me explico, me parece que no, yo voy pasando con un bucle fila
por fila y comprobando que el valor de la celda cells(i,3) esta siempre
en un intervalo determinado. Cuando el valor de la celda cells(i,3) se
me salga de este intervalo, quiero escribirlo en un archivo de texto,
con algo asi como un mensaje de aviso. Bueno, y si aparecen mas celdas
con valores extraños, añadirlas tambien, al mismo archivo de texto,
para tener al final algo asi como un "archivo de incidencias" o de
informacion de errores...

Alguna propuesta??

Un saludo,
Carmen

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
19/05/2006 - 07:53 | Informe spam
hola, Carmen !

-> 'los que sean "raros"'... 'informacion de algunas celdas'... 'algo asi como un mensaje de aviso'... 'intervalo determinado'...

[primero]: comentarte que estoy seguro que existen mas de dos alternativas de solucion al problema que planteas
[p.e.] usar un 'FreeFile' para escribir en un archivo [de texto] por los metodos del BIOS...
-> la ''informacion de algunas celdas''.. de 'los que sean "raros"'... segun el 'intervalo determinado'
o... usar autofiltros [o filtros avanzados] para extraer a otro rango [u otra hoja o libro] y guardar como...

[segundo]: a veces ['yo mismo']... me caigo mal por andar de 'pregunton'... evitando [o tratando de evitar] la 'fatiga de suponer'...
cuando [considero que todavia] existe un amplio 'abanico' de posibilidades/eventualidades/imponderables/situaciones/... [p.e.]

-> usar terminos 'ambiguos' como: 'pudiera ser uno u otro'... 'me da igual'... etc. -> AMPLIA el -posible- 'abanico de imponderables'...
y lograr que en una [o en pocas] propuestas de solucion... se de 'en el clavo' de la situacion 'real' que se pretende resolver... :-\
-> SI [probablemente] ya te he caido 'gordo' [a ti tambien, como 'a mi mismo']... :(
hace poco hice un comentario que +/- 'reza' como sigue: -> si quieres seguir por el camino de... 'adivinen lo que estoy pensando'...
-> no es necesario que 'escribas un libro' [para exponer los detalles de tu problema en la consulta]... NI que adjuntes un archivo
-> [cuando tengas un tiempecito]... revisa: http://spaces.msn.com/members/excel4all
-> si 'ya llegaste hasta este punto'... solo espero que no me consideres un... 'impertinente' ? ;)

y [finalmente]... si cualquier duda [o te animas a exponer los detalles 'del tintero']... comentas ?
saludos,
hector.

__ la consulta original __
Hola de nuevo, a ver si hay alguien que me pueda echar una mano...
Tengo una serie de datos y necesito localizar los que sean "raros" mediante una macro.
Ahora, una vez que los tengo localizados querria crear un archivo de texto
incluyendo las filas correspondientes a los "datos raros", o al menos alguna otra referencia a ellos.
En definitiva, necesito, mediante macro, crear un archivo de texto y escribir dentro la informacion de algunas celdas.
No se si me explico, me parece que no, yo voy pasando con un bucle fila por fila
y comprobando que el valor de la celda cells(i,3) esta siempre en un intervalo determinado.
Cuando el valor de la celda cells(i,3) se me salga de este intervalo, quiero escribirlo en un archivo de texto
con algo asi como un mensaje de aviso... y si aparecen mas celdas con valores extra#os
a#adirlas tambien, al mismo archivo de texto, para tener al final algo asi como un "archivo de incidencias" o de informacion de errores...
Alguna propuesta??
Respuesta Responder a este mensaje
#2 carmen
19/05/2006 - 10:08 | Informe spam
Hola Hector!
Me animo a seguir con los detalles, sobre todo porque no es la primera
vez que me ayudas y se que merece la pena :)

A ver si esta vez se me quedan menos cosas en el tintero:

-mi hoja de datos consta de varias columnas: ID (con un numero de
identificacion), Nombre (obviamente, un nombre), Fecha, Precio, Clase
(A,B o C) y otras que no afectan a este problema en concreto.
-mi objetivo es detectar Precios absurdos, anormalmente altos o
anormalmente bajos, y copiar en un archivo de texto el Precio, la ID
correspondiente, el Nombre y la Fecha. Y quizas tambien un mensaje que
diga: "el producto con ID "tal" presenta en la fecha "cual" un precio
anormalmente bajo/alto"
-para conseguir esto, he trabajado con el historico de los datos y he
conseguido calcular una especie de "intervalo de confianza" para cada
Clase (tengo por tanto 3 intervalos distintos), de manera que si mi
variable "precio" toma un valor fuera del correspondiente intervalo de
confianza, aparece por pantalla un mensaje de error que dice "el
producto.."

For i = 100 To 200
precio = Cells(i, 5).Value
clase = Cells(i, 9).Value
nombre = Cells(i, 2).Value
fecha= Cells(i, 4)
Cells(i, 5).Select

Select Case clase
Case "B"
If precio >= limitesupB Then

MsgBox (" Outlier " & fondo & " value " & precio & "too
high received on the " & fecha)

ElseIf precio <= limiteinfB Then

MsgBox (" Outlier " & fondo & " value " & precio & " too
low received on the " & fecha)
End If
Case "C"
..


-Total, resumiendo, la informacion la tengo, no tengo que calcular nada
mas, solo necesito "escribirla en un archivillo aparte, darle un nombre
("archivo de incidencias") y guardarlo".
-Si ademas hubiera forma de incluir la fecha actual en el nombre del
archivo, de forma automatica, seria estupendo.

En fin, espero que hayamos adelantado algo

Un saludo y muchas gracias!!!
Carmen
Respuesta Responder a este mensaje
#3 Héctor Miguel
20/05/2006 - 05:27 | Informe spam
hola, Carmen !

prueba con el siguiente codigo como un 'acercamiento inicial' [hay cosillas que he estimado/supuesto/asumido/...]
basado en la fraccion que expones del codigo que ya vienes utilizando ;)

si cualquier duda... algo 'le duele'... o informacion adicional... comentas ?
saludos,
hector.

' 4 lineas nuevas ...
Dim LineaNueva As String, Archivo As Integer, Incidencias As String, Anormal As String
Archivo = FreeFile
' define el nombre y ubicacion del archivo y el formato de la fecha ...
Incidencias = "c:\mis documentos\incidencias al " & Format(Date, "dd-mm-yyyy") & ".txt"
Open Incidencias For Output Access Write As #Archivo
For i = 100 To 200
' 2 lineas nuevas ...
LineaNueva = ""
Anormal = ""
precio = Cells(i, 5).Value
clase = Cells(i, 9).Value
nombre = Cells(i, 2).Value
fecha= Cells(i, 4)
Cells(i, 5).Select
Select Case clase
Case "B"
' cambiamos de los msgboxes por texto indicador de la anormalidad ... _
puedes conservar los msgboxes si lo consideras necesario [el codigo se interrumpe] :-(
If precio >= limitesupB Then Anormal = " high "
If precio <= limiteinfB Then Anormal = " low "
Case "C"
Case "X"
Case Else
End Select
' 4 lineas nuevas para escribir la linea en el archivo si existen anormalidades ...
If Anormal <> "" Then
LineaNueva = "Outlier " & fondo & " value " & precio & " too" & Anormal & "received on the " & fecha
Print #Archivo, LineaNueva
End If
Next
' cerramos el archivo ...
Close #Archivo

__ la consulta original __
A ver si esta vez se me quedan menos cosas en el tintero:
-mi hoja de datos consta de varias columnas: ID (con un numero de identificacion)
Nombre (obviamente, un nombre), Fecha, Precio, Clase (A,B o C) y otras que no afectan a este problema
-mi objetivo es detectar Precios absurdos, anormalmente altos o anormalmente bajos, y copiar en un archivo de texto
el Precio, la ID correspondiente, el Nombre y la Fecha. Y quizas tambien un mensaje que diga:
"el producto con ID "tal" presenta en la fecha "cual" un precio anormalmente bajo/alto"
-para conseguir esto, he trabajado con el historico de los datos y he conseguido calcular una especie de "intervalo de confianza"
para cada Clase (tengo por tanto 3 intervalos distintos), de manera que si mi variable "precio" toma un valor
fuera del correspondiente intervalo de confianza, aparece por pantalla un mensaje de error que dice "el producto.."
For i = 100 To 200
precio = Cells(i, 5).Value
clase = Cells(i, 9).Value
nombre = Cells(i, 2).Value
fecha= Cells(i, 4)
Cells(i, 5).Select
Select Case clase
Case "B"
If precio >= limitesupB Then
MsgBox (" Outlier " & fondo & " value " & precio & "too high received on the " & fecha)
ElseIf precio <= limiteinfB Then
MsgBox (" Outlier " & fondo & " value " & precio & " too low received on the " & fecha)
End If
Case "C"
..
-Total, resumiendo, la informacion la tengo, no tengo que calcular nada mas, solo necesito
"escribirla en un archivillo aparte darle un nombre ("archivo de incidencias") y guardarlo".
-Si ademas hubiera forma de incluir la fecha actual en el nombre del archivo, de forma automatica, seria estupendo.
Respuesta Responder a este mensaje
#4 carmen
22/05/2006 - 10:47 | Informe spam
Hola Hector!

Acabo de probar el codigo que me proponias y funciona muy bien, con
cambios minimos. Muchas muchas gracias!!!! Oye, se te da muy bien esto
de suponer cosas... :-)
Carmen
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida