Combobox lista archivos




En foros de sobre programación de macros en VBA para excel, se ha preguntado en varias oportunidades sobre la forma de listar archivos o ficheros y agregarlos en un combobox, si bien el el post listar archivos y subcarpetas se hace un listado, pero el mismo es copiados en las celdas de la hoja de cálculo; en el ejemplo que a continuación presento, se listan los archivos en un combobox.

El post combobox lista y selecciona hoja, está relacionado ya que se agrega al combobox un listado, pero en este caso es de las hojas de Excel, que al hacer click en un items del combobox se desplaza hasta dicha hoja.

Antes de seguir con el desarrollo y en el caso que no tengas conocimiento suficiente sobre el manejo de hojas de Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel elclick acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.
que te ayudará manejar las planillas de cálculo, debes hacer 
MASTERCARD PAYONEER


Si realizamos macros a menudo, seguramente alguna vez tuvimos la necesidad de tener listados todos los archivos de una capeta determinada, para que luego de ser seleccionado se realice alguna acción con este archivo, ya sea extraer datos o cualquier otro procedimiento de VBA; en este ejemplo se explica con claridad como se puede listar archivos y agregarlos a un combobox; el código que se encuentra más abajo y en el archivo de ejemplo; permite abrir un cuadro de diálogo para seleccionar una carpeta, una vez seleccionada, los archivos que se encuentran en dicha directorio son listados en un combobox, al presionar el botón aceptar, en este ejemplo, copia el nombre del archivo en la columna A; pero tiene múltiple usos, como por ejemplo se podría seleccionar un archivo para que una macro busque datos en dicha hoja o bien guarde datos.

Para listar los archivos se usa FileSystemObject, este comando da acceso al sistema de archivos del sistema en este ejemplo se crea un objeto con Set fso = CreateObject("Scripting.FileSystemObject"); para utilizar el explorador de archivos de Windows sencillo y que se pueda seleccionar una carpeta se utiliza Path = CreateObject("shell.application").browseforfolder(0, "Seleccione Carpeta", 0).Items.Item.Path

Al final de este post se encuentra un link del cual podrás descargar el archivo de ejemplo, de esta manera verás su funcionamiento en forma más detallada. El código de VBA o Macro de Excel hace un listado de los archivos que se encuentran en la carpeta seleccionada desde el cuadro de diálogo de Windows, listando y agregando a un combobox los archivos o ficheros encontrados.


Código que se debe insertar en un formulario


Private Sub CommandButton1_Click()
On Error Resume Next
Dim uf As Integer
If ComboBox1 = Empty Then
MsgBox ("Debe seleccionar archivo"), vbCritical, "AVISO"
ComboBox1.SetFocus
Exit Sub
End If
uf = Sheets("hoja1").Range("A" & Rows.Count).End(xlUp).Row
Cells(uf + 1, 1) = ComboBox1
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub


     

Private Sub UserForm_Initialize()
On Error Resume Next
DisplayAlerts = True
Application.ScreenUpdating = True
Dim Path As String
Dim fila As Integer
fila = 2
'Se crea FileSystemObject que da acceso al sistema de archivos del sistema
Set fso = CreateObject("Scripting.FileSystemObject")
'Indicamos la ruta de donde vamos a obtener
Path = CreateObject("shell.application").browseforfolder(0, "Seleccione Carpeta", 0).Items.Item.Path
 If Path = "" Then
 MsgBox "No has seleccionado ningún directorio, selecciona un directorio .", , "AVISO"
 Exit Sub
 End If
'También podemos indicarla en forma fija si siempre es la misma
'Path = "C:\Users\MyNotebook\Documents\Fotos Productos"

'Definimos variables para determinar nombre de archivos y subcarpetas
Set carpeta = fso.getfolder(Path)
Set ficheros = carpeta.Files

'Archivos
For Each ficheros In ficheros
 
    b = ficheros.Name
    ComboBox1.AddItem b
Next ficheros

DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


Código que se inserta en un módulo

Sub showuf()
UserForm1.Show
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends