J'ai un problème dans VBA, je veux obtenir le chemin d'accès d'un dossier basé sur une valeur de zone de liste déroulante.Rechercher un chemin de dossier basé sur une valeur de cellule avec une zone de liste déroulante
Voir, j'ai une feuille Excel appelée « TAG » où dans sa première colonne j'ai beaucoup de valeurs, comme P36300000, C36300001, etc. (image ci-dessous)
J'ai créé une macro boucle dans la colonne de feuille et crée un dossier basé sur chaque valeur de cellule.
Le « P » signifie qu'il est l'élément principal , et le « C » signifie qu'il est juste un élément de ce article.
i.e., il crée le P36300000 dossier qui contient: 3C6300001, C36300002, C36300003, C36300004, C36300005, C36300006 et la P36300007 contient le C36300008.
Chacun (dossier primaire et le composant) a obtenu un dossier DT, où un fichier Excel est situé. (Non revelant mais, au cas où)
Le chemin du composant doit être quelque chose comme H: \ Work \ projet \ 2017 \ A1 \ P36300000 \ C36300001
Et quelque chose primaire comme H: \ Work \ Project \ 2017 \ A1 \ P36300000
Mon code est quelque chose comme ceci, mais, il ne peut pas obtenir le dossier de composant, seulement le principal.
Option Explicit
Private Sub btnPath_Click()
Dim MyValue As String
Dim subFldr As Object
Dim msg As String
Dim fldr As String
Worksheets("TAG").Visible = True
MyValue = cmbTAG.Value ' Selected Value of the cmbBOX
fldr = ActiveWorkbook.Path & "\2017"
If (Left(cmbTAG.Value, 1) = "P") Then ' If the Folder is Primary
fldr = ActiveWorkbook.Path & "\2017\A1"
If Dir(fldr, vbDirectory) <> "" Then
For Each subFldr In CreateObject("Scripting.FileSystemobject").GetFolder(fldr).Subfolders
If subFldr Like "*\" & MyValue Then msg = subFldr.Name
Next subFldr
txtRutaPadre.Text = fldr & "\" & msg
txtRutaDT.Text = fldr & "\" & msg & "\DT"
End If
ElseIf (Left(cmbTAG.Value, 1) = "C") Then ' if it is a Component.
fldr = ActiveWorkbook.Path & "\2017\A1"
If Dir(fldr, vbDirectory) <> "" Then
For Each subFldr In CreateObject("Scripting.FileSystemobject").GetFolder(fldr).Subfolders
If subFldr Like "*\" & MyValue Then msg = subFldr.Name
Next subFldr
txtPrimary.Text = fldr & "\" & msg
txtDT.Text = fldr & "\" & msg & "\DT"
End If
End If
End Sub
Merci pour votre temps!
pourquoi ne peut-il obtenir le dossier des composants? ... ce qui se produit? ...les réponses à ces questions auraient dû être dans votre message depuis le début. – jsotola
Peut-être parce qu'il vous manque une parenthèse de fermeture sur cette ligne 'fldr = ActiveWorkbook.Path &" \ 2017 \ A1' – pheeper
@jsotola Il ne montre pas le sous-dossier parce que quand j'appuie sur le bouton avec un composant, il n'obtenez pas le chemin principal (P3 ...) puis le composant (\ P3 ... \ C3 ...) Je ne sais pas pourquoi vraiment – Matto