Cómo abrir una carpeta con VBA
Resuelto
supercopain
-
debutant_en_macro -
debutant_en_macro -
Hola,
estoy buscando una macro que abra una carpeta cuyo nombre está en una lista de Excel
ejemplo en una lista resumen tengo E1234
en una carpeta se encuentran varias carpetas, solo una se llama E1234, blabla
cuando la celda de mi lista que contiene E1234 haga clic en un botón para abrir la famosa carpeta del mismo nombre.
muchas gracias
<config>Windows xp /office 2003
estoy buscando una macro que abra una carpeta cuyo nombre está en una lista de Excel
ejemplo en una lista resumen tengo E1234
en una carpeta se encuentran varias carpetas, solo una se llama E1234, blabla
cuando la celda de mi lista que contiene E1234 haga clic en un botón para abrir la famosa carpeta del mismo nombre.
muchas gracias
<config>Windows xp /office 2003
14 respuestas
-
Pense à mettre en résolu si c'est ok!
le message apparaîtra en bas à gauche de la feuille,
tous les 20 dossiers.
A l'endroit où tu vois 'Prêt'Opción Explícita Pública V Como String Declarar Función ShellExecute Biblioteca "shell32.dll" Alias "ShellExecuteA" _ (Por Valor hwnd Como Long, Por Valor lpOperation Como String, _ Por Valor lpFile Como String, Por Valor lpParameters Como String, _ Por Valor lpDirectory Como String, Por Valor nShowCmd Como Long) Como Long Sub OuvreDossier() Dim Target Como Rango V = "" Dim chainePath Como String Est Target = ActiveCell chainePath = "G:\Docu\R&D\Rapports d'essais" 'chainePath = "C:\Data\2009" Si No Intersect(Target, Range("A2:A20")) Is Nothing Entonces ' la plage qui contient les essais Application.ScreenUpdating = False V = Left(Replace(ActiveCell.Value, "E", "E ", 1), 6) Call AfficherListeDossiers(chainePath, CreateObject("Scripting.FileSystemObject"), V) If V <> "" Then ShellExecute 0, "explore", V, "", "", 10 End If End If End Sub Public Sub AfficherListeDossiers(ByVal specdossier Como String, Por Refer Fso, Por Valor leChemin) ' Dim j As Integer Dim msgStatusBarre Como String msgStatusBarre = Application.DisplayStatusBar ' sauvegarde Dim dossier, fd, sDossier ' variable de type variant ' Set Fso = CreateObject("Scripting.FileSystemObject") ' créé un objet fileSystem Set dossier = Fso.GetFolder(specdossier) ' dossier : héritage de fso Set sDossier = dossier.SubFolders 'sDossier : héritage de dossier j = 0 Para Cada fd In sDossier ' Scanne la collection sDossier j = j + 1 If (j Mod 20) = 0 Então ' mise à jour du message tous les 20 dossiers Application.StatusBar = j & " traités sur : " & sDossier.Count End If If InStr(1, fd.Name, V) > 0 Then V = fd Salir Para End If End If Próximo Set sDossier = Nothing Set dossier = Nothing Application.StatusBar = False Application.DisplayStatusBar = msgStatusBarre End Sub