Hola valedor

¿Hola, cómo estas?
Espero que bien...
Bueno, la pregunta es:
1- ¿Puedo hacer que la lista de un combobox sean los archivos de un directorio?
2-¿Cómo podría hacer esto?
3-¿Qué otra opción habría para ver los archivos contenidos en un directorio desde un userform?
4-Tengo una etiqueta con la fecha y ahora actual... ¿es posible echar a andar el reloj? ¿Cómo le hago?
Gracias por la atención e interés que siempre nos has prestado.
slds

1 Respuesta

Respuesta
1
Estoy bien gracias y gracias otra vez por que muy pocos lo preguntan, no es que lo necesite pero a veces me gusta leerlo...
1.- Si, si se puede...
2.- Supongo que ya sabes manejar un poco los UserForm, así que solo te indicare como hacerlo en el evento Initialize del UserForm
Private Sub UserForm_Initialize()
Dim fs As FileSearch
Dim co1 As Integer
Set fs = Application.FileSearch
With fs
.LookIn = "D:\Temporal" 'Directorio donde se buscara
.Filename = "*.*" 'Tipo de archivo a buscar puede ser *.xls *.txt
'o cualquier otra extension
.SearchSubFolders = True 'Para buscar en los subdirectorios
.Execute 'Realiza la busqueda
If .FoundFiles.Count > 0 Then
'Si hay archivos
For co1 = 1 To .FoundFiles.Count
'los agregamos al combobox
cboArchivos.AddItem .FoundFiles(co1)
Next co1
cboArchivos.ListIndex = 0
Else
MsgBox "No se encontraron archivos."
End If
End With
Set fs = Nothing 'Liberamos la memoria
End Sub
3.- VBA cuenta con otras funciones que pueden hacer lo mismo que el código anterior, esta es Dir(Ruta) y con algo de ciclos y condiciones, pero si la forma más rápida y sencilla es la expuesta en el inciso anterior...
4.- Si se puede, pero no te recimiendo, el evento OnTimer que trae el objeto Application no es muy bueno, pero pruébalo
'Estas lineas van en el evento Initialize del UserForm, justo antes de cerrar
lblHora.Caption = Format(Now, "HH:mm")
Application.OnTime Now + TimeValue("00:01"), "Actualiza_Etiqueta"
End Sub
'Indispensable detener el OnTime al salir de UserForm
Private Sub UserForm_Terminate()
On Error Resume Next
Application.OnTime Now, "Actualiza_Etiqueta", , False
End Sub
'La macro "Actualiza_Etiqueta" debe estar como publica en un modulo de codigo
Public Sub Actualiza_Etiqueta()
On Error GoTo errControl
UserForm1.lblHora.Caption = Format(Now, "HH:mm:ss")
Application.OnTime Now + TimeValue("00:01"), "Actualiza_Etiqueta"
Exit Sub
errControl:
Application.OnTime Now, "Actualiza_Etiqueta", , False
End Sub
Como te decía, no me gusta como se comporta, esta macro te actualiza la etiqueta cada minuto, no te recomiendo que sea cada segundo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas