ComboBox que lista archivos y carpetas de un directorio

1 post / 0 nuevos
cottavi
Imagen de cottavi
Offline
última acción: Hace 6 años 11 meses
alta: 14/04/2017 - 21:53
Puntos: 25
ComboBox que lista archivos y carpetas de un directorio

ComboBox que lista las sub carpetas (y archivos) de un directorio, al seleccionar un item, se abre la sub carpeta o el archivo

Buenos días/tardes/noches al foro.

Espero que disfruten de esta semana santa y espero también que descansen.

Mi problema es el siguiente:

Deseo ejecutar una macro (anexa) en excel para aplicaciones para vaciar el contenido de un directorio en un combobox, en dicho combobox se listaran las carpetas y los archivos que existan en ese directorio. Si al seleccionar un item en el combobox, este es una sub carpeta, esta se abrirá mostrando su contenido (como al inicio), pero si es un archivo abrirá el archivo sin importar su extensión. Para abrir el archivo he creado una rutina llamada "abrir".

Me he apoyado en una respuesta de la Sra Elsa Matilde del 13 de enero de 2012 y la he adaptado a mi propósito pero tengo problemas al cargar de nuevo el combobox con la nueva ruta.

¿Podrían ayudarme al respecto?
Anexo encontraran el link de Elsa Matilde de enero de 2012:

ComboBox con listado de carpetas

A continuación encontraran el código completo que estoy utilizando y las notas que voy dejando.

Como verán en el código solo tengo un UserForm, un ComboBox y un botón para salir.

Este es el código:

Public strArchivos As String

Public strNombreCarpeta As String

Public ruta As String

Public archivo As String

Sub AUTO_OPEN()

Load UserForm1

UserForm1.Show

End Sub

Sub abrir(archivo As String)

'con esta sub rutina se abren los archivos seleccionados sin importar su extensión

ShellExecute Application.Hwnd, "Open", archivo, _
vbNullString, _
vbNullString, _
SW_SHOWNORMAL

End Sub

Private Sub ComboBox1_Click()

'aqui añadimos la variable strNombreCarpeta lo seleccionado en el ComboBox1

strNombreCarpeta = ruta & ComboBox1.Text
archivo = strNombreCarpeta

'si lo seleccionado en el combobox1 es un texto, vuelve a cargar el combobox1
'con el contenido de la nueva ruta

'de lo contrario, llama a la rutina "abrir" para abrir el archivo sin importar su extensión

End Sub

Private Sub CommandButton1_Click()

Unload Me

End Sub

Private Sub UserForm_Activate()

'por Elsamatilde en:
'http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-...

'carpeta donde se hará la búsqueda - AJUSTAR
strNombreCarpeta = "C:\Users\Usuario\Downloads\Ppto\"
'guardamos la ruta inicial para luego pegarle el directorio (o el nombre del archivo)
'seleccionado en el comobobox1
ruta = strNombreCarpeta
'limpiamos el combobox1
ComboBox1.Clear

'pasamos al directorio elegido
On Error GoTo sincarpeta
ChDir strNombreCarpeta
On Error GoTo 0

'recorremos la carpeta buscando archivos de esta extensión - AJUSTAR EXTENSIÓN
strArchivos = Dir(strNombreCarpeta, 16)

'recorremos los archivos de la carpeta
Do While strArchivos <> ""

'mostramos el nombre de cada elemento encontrado si no tiene puntos

'con esta instrucción solo se ven los directorios (carpetas)

'If InStr(strArchivos, ".") = 0 Then ComboBox1.AddItem strArchivos

'con esta instrucción vemos todo (archivos y carpetas, incluye archivos . Y ..)
ComboBox1. AddItem strArchivos

'obtenemos la siguiente entrada
strArchivos = Dir()
Loop

Exit Sub

sincarpeta:

MsgBox "La carpeta seleccionada está vacia" & strNombreCarpeta, , "ERROR"

Unload Me

End Sub