• Domingo 22 de Diciembre de 2024, 03:13

Autor Tema:  Buscar Un Fichero Para Macro Excel  (Leído 1903 veces)

basicname

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Buscar Un Fichero Para Macro Excel
« en: Martes 2 de Noviembre de 2004, 15:52 »
0
Hola, os envio esta macro en excel, funciona pero tengo un problema, necesito que el archivo log se llame siempre fw.log por lo que lo tengo que renonbrar, hay alguna forma de que al ejecutar la macro se me abra una ventana y me deje seleccionar el archivo que quiero tratar?

supongo que el unico trozo de codigo a sustituir es:

ChDir "D:\LOGS\LOG ISA"

Workbooks.OpenText Filename:="D:\LOGS\LOG ISA\FW.log", Origin:=xlWindows, _

gracias.

Sub FwIsaNuevo()
'
' FwIsaNuevo Macro
' Macro grabada el 29/10/2004 por jeso00
'

'
ChDir "D:\LOGS\LOG ISA"

Workbooks.OpenText Filename:="D:\LOGS\LOG ISA\FW.log", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False,
Comma:=False _
, Space:=False, Other:=True, OtherChar:=",",
FieldInfo:=Array(Array(1, 1 _
), Array(2, 1), Array(3, 1), Array(4, 9), Array(5, 1),
Array(6, 1), Array(7, 9), Array(8, 1), _
Array(9, 9), Array(10, 9), Array(11, 1), Array(12, 1),
Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 9),
Array(20, 9), Array(21, 9), _
Array(22, 1), Array(23, 9), Array(24, 9), Array(25, 9),
Array(26, 1), Array(27, 1))
Rows("1:1").Select
Selection.Insert Shift:=xlDown
Range("A1").Select
ActiveCell.FormulaR1C1 = "IP"
Range("B1").Select
ActiveCell.FormulaR1C1 = "USUARIO"
Range("C1").Select
ActiveCell.FormulaR1C1 = "AGENTE"
Range("D1").Select
ActiveCell.FormulaR1C1 = "FECHA"
Range("E1").Select
ActiveCell.FormulaR1C1 = "HORA"
Range("F1").Select
ActiveCell.FormulaR1C1 = "PROXY"
Range("G1").Select
ActiveCell.FormulaR1C1 = "IP DESTINO"
Range("H1").Select
ActiveCell.FormulaR1C1 = "PUERTO DESTINO"
Range("I1").Select
ActiveCell.FormulaR1C1 = "TIEMPO"
Range("J1").Select
ActiveCell.FormulaR1C1 = "ENVIADO"
Range("K1").Select
ActiveCell.FormulaR1C1 = "RECOBIDO"
Range("K1").Select
ActiveCell.FormulaR1C1 = "RECIBIDO"
Range("L1").Select
ActiveWindow.SmallScroll ToRight:=7
Columns("L:L").Select
Selection.Delete Shift:=xlToLeft
Range("L1").Select
ActiveCell.FormulaR1C1 = "PROTOCOLO"
Range("M1").Select
ActiveCell.FormulaR1C1 = "ACCION"
Range("N1").Select
ActiveCell.FormulaR1C1 = "RESULTADO"
Range("O1").Select
ActiveCell.FormulaR1C1 = "ID SESION"
Range("P1").Select
ActiveCell.FormulaR1C1 = "ID CONEXIÓN"
Range("Q6").Select
ActiveWindow.ScrollColumn = 1
Range("A1:P1").Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
Selection.Font.Bold = True
Columns("A").Select
Selection.AutoFilter
Range("A2").Select
ChDir "C:\Documents and Settings\jeso00\Escritorio"
ActiveWorkbook.SaveAs Filename:= _
"D:\LOGS\LOG ISA\FW" + Date$ + ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Buscar Un Fichero Para Macro Excel
« Respuesta #1 en: Martes 2 de Noviembre de 2004, 16:23 »
0
Hola basicname.

Declara la función del api de windows GetOpenFileName y utilízala en una llamada que devuelva un nombre de archivo seleccionado en el cuadro de diálogo correspondiente.

Si tienes dudas sobre el uso de la función api, utiliza la herramienta de búsqueda en este mismo foro, que me consta hay un tema al respecto.

Suerte.

basicname

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Buscar Un Fichero Para Macro Excel
« Respuesta #2 en: Martes 2 de Noviembre de 2004, 17:23 »
0
puedes ser un poco mas concreto por favor?
no entiendo, donde pongo la funcion?
que devuelve?

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Buscar Un Fichero Para Macro Excel
« Respuesta #3 en: Martes 2 de Noviembre de 2004, 17:37 »
0
Imos ver...

En el mismo módulo en el que tienes el código del macro, crea una función que devolverá un valor string. Ese valor corresponderá con el nombre de un archivo seleccionado mediante el uso de la función api GetOpenFileName (si no sabes utilizarla, busca en este mismo foro, te repito que hay un ejemplos de su uso). La declaración del api puedes hacerla también en el módulo donde tienes el macro.

En vez de utilizar un literal ("D:\LOGS\LOG ISA\FW.log") , usa una variable a la que previamente habrás asignado el valor devuelto por la función de la que hablamos antes.

¿Mexplicao mejor?,¿lo pillas ya?,¿prefieres todo el código ya escrito?...

Chau.

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Re: Buscar Un Fichero Para Macro Excel
« Respuesta #4 en: Miércoles 3 de Noviembre de 2004, 09:41 »
0
Hola Jesús,

Estuve mirando lo que me preguntastes y aqui te envio un ejemplo hecho en excel para que lo mires y soluciones tu problema.

Un saludo.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid