Filtrar Archivo Hectoooor

29/09/2004 - 18:50 por mfernandez | Informe spam
Hola a todos.
Si estas Hector gracias por tu ayuda ya lo solucione parte
de lo que te solicite.
Pero quiero saber, como puedo ejecutar esta macro
automáticamente y donde se guarda la misma, ya que quiero
que se ejecute a las 02:00 todos los días.

Adicionalmente con que instrucción puedo eliminar datos
como: Mon Sep 27 06:29:28 2004: [567] sin que afecte a los
campos como User-Name entre otros, del archivo.

Mon Sep 27 06:29:28 2004: [567] radrecv: Request from host
64.46.84.33 code=1, idˆ, lengthv
Mon Sep 27 06:29:28 2004: [567] User-Name = "editor"
Mon Sep 27 06:29:28 2004: [567] Password = "_f\340\271\217
\321e\2667p\370\022\216m\333C"
Mon Sep 27 06:29:28 2004: [567] NAS-IP-Address =
64.46.84.33
Mon Sep 27 06:29:28 2004: [567] NAS-Port = 3
Mon Sep 27 06:29:28 2004: [567] NAS-Port-Type = Async
Mon Sep 27 06:29:28 2004: [567] Service-Type = Framed-User
Mon Sep 27 06:29:28 2004: [567] Framed-Protocol = PPP
Mon Sep 27 06:29:28 2004: [567] Sending Accept of id 88 to
64.46.84.33 (64.46.84.33)
Mon Sep 27 06:29:28 2004: [567] Service-Type = Framed-User
Mon Sep 27 06:29:28 2004: [567] Framed-Protocol = PPP
Mon Sep 27 06:29:28 2004: [567] Framed-IP-Address =
255.255.255.254
Mon Sep 27 06:29:28 2004: [567] Framed-IP-Netmask =
255.255.255.255
Mon Sep 27 06:29:28 2004: [567] Framed-Routing = None
Mon Sep 27 06:29:28 2004: [567] Framed-Compression = Van-
Jacobson-TCP-IP
Mon Sep 27 06:29:28 2004: [567] Framed-MTU = 1500
Mon Sep 27 06:29:28 2004: [567] Session-Timeout = 0
Mon Sep 27 06:29:28 2004: [567] Idle-Timeout = 900
Mon Sep 27 06:29:29 2004: [567] radrecv: Request from host
64.46.84.33 code=4, id‰, length’



Gracios por la ayuda
 

Leer las respuestas

#1 Héctor Miguel
30/09/2004 - 06:46 | Informe spam
hola, mfernandez ! -> voy a [tratar de] 'responderte' +/- 'donde preguntas' ;)

Si estas ... gracias por tu ayuda ya solucione parte...


=> tarde :-(( 'pero...' ¡ sin sueño !!! :))

... como puedo ejecutar esta macro automaticamente y donde se guarda la misma
... quiero que se ejecute a las 02:00 todos los dias.


=> para que un procedimiento se ejecute a una 'hora determinada'...
la macro [de preferencia] se guarda en un modulo de codigo 'norma' y...
se puede 'programar su ejecucion' [usando el metodo 'OnTime'] en el evento '_open' del libro
=>se espera que<= el libro que contiene la macro... ->este abierto<- [antes de la hora 'programada']

... eliminar datos como: Mon Sep 27 06:29:28 2004: [567]
... sin que afecte a los campos como User-Name entre otros, del archivo.


=> si la 'estructura' de los datos 'eliminables' es ->siempre<- la misma...
->en este caso 'se cuentan' 32 caracteres ->incluyendo<- el espacio despues del caracter ']'<-
podrias 'decirle' a la macro que 'en lugar de' transcribir la linea 'completa'... 'inicie' con el caracter #33
=> si la 'estructura' es 'variable' -p.e. porque el numero entre los corchetes sea [de]creciente-...
habria que 'buscar' la posicion del carcter 'de cierre' y 'devolver' a partir de dos posiciones despues de...

te expongo las propuestas de macro a continuacion...
si cualquier duda [o... 'problemas']... ¿comentas?
=> [ya sabes las variables que se modifican de acuerdo con 'tus' datos reales] <saludos,
hector.

1° las siguientes lineas 'van' en el modulo de codigo ->del libro<- [ThisWorkbook ?]
Dim HoraEvento As Date, EstaMacro As String
Private Sub Workbook_Open(): Exit Sub
HoraEvento = TimeValue("14:00:00")
EstaMacro = "LeerDatosLOG"
Application.OnTime _
EarliestTime:=HoraEvento, _
Procedure:=EstaMacro, _
Schedule:=True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime _
EarliestTime:=HoraEvento, _
Procedure:=EstaMacro, _
Schedule:=True
End Sub

2° la macro [LeerDatosLOG] -con 'ligeras' modificaciones- en un modulo de codigo 'normal'
Sub LeerDatosLOG()
Dim Archivo As String, Datos As Variant, Log As Byte, _
Linea As String, Dato As Integer
Archivo = "C:\Mis documentos\El archvo log.txt"
Datos = _
Array("User-Name", "Acct-Session-Id", _
"Acct-Input-Octets", "Acct-Output-Octets")
Log = FreeFile
Open Archivo For Input As #Log
Do While Not EOF(Log)
Line Input #Log, Linea
For Dato = 0 To UBound(Datos)
If InStr(Linea, Datos(Dato)) > 0 Then
Worksheets("Hoja1").Range("a65536").End(xlUp).Offset(1) _
= Mid(Linea, InStr(Linea, "]") + 2)
Exit For
End If
Next
Loop
Close #Log
End Sub

Preguntas similares