Combobox de archivos en una carpeta

Tengo un formulario al que me gustaría agregarle un combobox que me liste los archivos de una carpeta determinada.

2 respuestas

Respuesta
2

Te anexo la macro

Private Sub UserForm_Activate()
'Por.Dante Amor
    carpeta = "C:\trabajo\"
    archivo = Dir(carpeta & "*.*")
    Do While archivo <> ""
        ComboBox1.AddItem archivo
        archivo = Dir()
    Loop
End Sub

Cambia en esta línea de la macro por el nombre de tu carpeta:

carpeta = "C:\trabajo\"

Cambia "*.*" por la extensión en particular de los archivos que quieras cargar, por ejemplo, si quieres archivos de excel, quedaría "*.xls*"


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Dante, gracias por tu respuesta sin embargo no he podido aplicar tu macro porque tengo otras cosas en el Private Sub UserForm_Initialize(), como hago para poder concatenar tu macro con lo mio?

Saludos y gracias

Tienes que poner mi código dentro del evento, Quedaría así:

Private Sub UserForm_Initialize()
'En esta parte pon tu código
'tu código
'tu código
'fin de tu código
'
'Por.Dante Amor
    dim carpeta, archivo
    carpeta = "C:\trabajo\"
    archivo = Dir(carpeta & "*.*")
    Do While archivo <> ""
        ComboBox1.AddItem archivo
        archivo = Dir()
    Loop
End Sub

De esa forma solamente tendrás un evento Userform_Initialize()

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

h o l a

Private Sub UserForm_Activate()
'
Set fso = CreateObject("Scripting.FileSystemObject")
'Ruta = ThisWorkbook.Path
'
Ruta = "C:\cita\"
'
Set Carpeta = fso.GetFolder(Ruta)
Set ficheros = Carpeta.Files
For Each archivo In ficheros
    If Right(archivo.Name, 5) = ".xlsm" Then ComboBox1.AddItem archivo.Name
Next archivo
'
End Sub

cambia la ruta donde están tus archivos 

Ruta = "C:\cita\"

Muy buenas Adriel. Gracias por tu respuesta.

He intentado aplicar tu solución sin embargo como tengo otras "instrucciones" al cargarse el form no he podido combinar tu sugerencia. Lo que tengo en Private Sub Userform_Activate() es

'- Inicio de instrucciones para hacer que aparezcan los botones para minimizar maximizar
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const GWL_STYLE As Long = (-16)
Private Sub UserForm_Initialize()
    Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long
    If Application.Version < 9 Then
        lngMyHandle = FindWindow("THUNDERXFRAME", Me.Caption)
    Else
        lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption)
    End If
    lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)
    lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
    SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle
End Sub
'- fin de instrucciones para hacer que aparezcan los botones para minimizar maximizar
'- inicio de instrucciones de botones para pasar entre páginas
'Private Sub UserForm_Initialize()
Private Sub WithMultiPage1()
.Value = 0
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
End With
End Sub
Private Sub CommandButton1_Click() 'ir a ...
With MultiPage1
.Page1.Enabled = True
.Page3.Enabled = True
.Page2.Enabled = True
.Page4.Enabled = True
.Value = 1
End With
End Sub
Private Sub CommandButton3_Click() 'volver a ...
With MultiPage1
.Page2.Enabled = True
.Page3.Enabled = True
.Page1.Enabled = True
.Page4.Enabled = True
.Value = 0
End With
End Sub
Private Sub CommandButton4_Click() 'ir a ...
With MultiPage1
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
.Value = 2
End With
End Sub
Private Sub CommandButton5_Click() 'volver a ...
With MultiPage1
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
.Value = 1
End With
End Sub
Private Sub CommandButton6_Click() 'ir a ...
With MultiPage1
.Page2.Enabled = True
.Page3.Enabled = True
.Page1.Enabled = True
.Page4.Enabled = True
.Value = 3
End With
End Sub
Private Sub CommandButton7_Click() 'volver a ...
With MultiPage1
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
.Value = 2
End With
End Sub
'- fin de instrucciones de botones para pasar entre páginas

Espero se entienda, podrás ver como lo combino.

Saludos.-

 H o l a 

Del amigo Dante es más explicito le puse en la macro.

Y n olvides de cambiar la ruta donde tienes tus archivos

carpeta = "C:\trabajo\"

'- Inicio de instrucciones para hacer que aparezcan los botones para minimizar maximizar
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const GWL_STYLE As Long = (-16)
Private Sub UserForm_Initialize()
    Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long
    If Application.Version < 9 Then
        lngMyHandle = FindWindow("THUNDERXFRAME", Me.Caption)
    Else
        lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption)
    End If
    lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)
    lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
    SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle
End Sub
Private Sub UserForm_Activate()
'aqui agrega otras macros
'
'
'
'
'
'
'
'
'
'
'
'
'Por.Dante Amor
    carpeta = "C:\trabajo\"
    archivo = Dir(carpeta & "*.xls*")
    Do While archivo <> ""
        ComboBox1.AddItem archivo
        archivo = Dir()
    Loop
End Sub
'- fin de instrucciones para hacer que aparezcan los botones para minimizar maximizar
'- inicio de instrucciones de botones para pasar entre páginas
Private Sub WithMultiPage1()
.Value = 0
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
End With
End Sub
Private Sub CommandButton1_Click() 'ir a ...
With MultiPage1
.Page1.Enabled = True
.Page3.Enabled = True
.Page2.Enabled = True
.Page4.Enabled = True
.Value = 1
End With
End Sub
Private Sub CommandButton3_Click() 'volver a ...
With MultiPage1
.Page2.Enabled = True
.Page3.Enabled = True
.Page1.Enabled = True
.Page4.Enabled = True
.Value = 0
End With
End Sub
Private Sub CommandButton4_Click() 'ir a ...
With MultiPage1
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
.Value = 2
End With
End Sub
Private Sub CommandButton5_Click() 'volver a ...
With MultiPage1
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
.Value = 1
End With
End Sub
Private Sub CommandButton6_Click() 'ir a ...
With MultiPage1
.Page2.Enabled = True
.Page3.Enabled = True
.Page1.Enabled = True
.Page4.Enabled = True
.Value = 3
End With
End Sub
Private Sub CommandButton7_Click() 'volver a ...
With MultiPage1
.Page1.Enabled = True
.Page2.Enabled = True
.Page3.Enabled = True
.Page4.Enabled = True
.Value = 2
End With
End Sub
'- fin de instrucciones de botones para pasar entre páginas

Adriel, gracias por la ayuda. Use tu sugerencia y aparece un error de compilación. No se ha definido la variable.

¿Qué puede ser?

Saludos

Declara las variables

dim carpeta, archivo

No olvides de finalizar valorando saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas