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
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
- Compartir respuesta
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
- Compartir respuesta