Utilisation de VB6
Code. P>
CommonDialog1.DialogTitle = "Open File"
CommonDialog1.Filter = "*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.Flags = cdlOFNAllowMultiselect + cdlOFNExplorer
CommonDialog1.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly
CommonDialog1.CancelError = True
On Error Resume Next
CommonDialog1.ShowOpen
If Err Then
'MsgBox "Select Folder"
Exit Sub
End If
4 Réponses :
Pour sélectionner un dossier, vous pouvez utiliser le composant Shell et Automation. Vous devrez ajouter une référence à ou vous pouvez utiliser l'API Windows comme Twotymz suggère. P> P> shell32.dll code> à votre projet. Utilisez le menu Project / Références ... Menu, puis naviguez pour shell32.dll code>. P>
Cela fonctionne raisonnablement bien, mais la valeur Shlfolder.Title n'est que le nom du répertoire sélectionné et non l'ensemble du chemin.
@Kenforslund: Je présume que vous pouvez récupérer quelque chose d'autre sur ce shlfolder code> Outre titre code> plus approprié.
ne semble pas si. .ParentFolder est le prochain nom de dossier, mais encore une fois, juste un seul nom unique, pas un chemin d'aucune sorte. Cela résolvait toujours mon besoin pour le moment, mais je m'attendais à un chemin plus robuste.
Cela fait longtemps que je devais faire un travail de base visuel, mais je pense qu'au lieu d'utiliser la boîte de dialogue commune pour obtenir le nom d'un fichier à ouvrir, vous devez utiliser la fonction Mise à jour (2017): Le lien fourni est cassé mais une version sauvegardée peut être visionnée sur archive.org p>
Ne fais pas ça. La réponse devrait être autonome et non dépendante sur des liens externes car ils peuvent briser au fil des ans. Un lien peut être donné comme une référence pour enrichir votre réponse, mais ne doit pas constituer le corps principal de celui-ci.
Toute personne qui souhaite voir le lien ininterrompu peut cliquer ici: web.archive.org/web/20081204022345/http://www.base64.co.uk:8 0 / ...
Cette version semble être bien: https://github.com/badcodes/vb6/tree / maître / folderrowser
@thebunnyrules - La réponse est autonome. Si la phrase contenant le lien ne contenant pas n'est pas là que la réponse aurait toujours un sens et informerait l'utilisateur de l'action nécessaire pour corriger le problème.
Je pense que c'est plus général de la VBA Question, d'ouverture de la boîte de dialogue Sélectionner un dossier dans VBA pour Office> = 2K3.
Je ne pouvais pas croire que c'est si difficile, car j'ai besoin de la même fonctionnalité. Peu de googling l'a fait. Voici une belle solution simple Jetez un coup d'œil P>
Function GetFolderName()
Dim lCount As Long
GetFolderName = vbNullString
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = OpenAt
.Show
For lCount = 1 To .SelectedItems.Count
GetFolderName = .SelectedItems(lCount)
Next lCount
End With
End Function
La question concerne VB6, pas sur VBA!, Il n'y a aucun Application.FileDialog code> dans VB6;).
C'est un vieux fil, mais peut-être que quelqu'un sera aidé par cela. Ce code fonctionne dans VB6 pour moi:
Private Sub ChooseDir_Click()
Dim sTempDir As String
On Error Resume Next
sTempDir = CurDir 'Remember the current active directory
CommonDialog1.DialogTitle = "Select a directory" 'titlebar
CommonDialog1.InitDir = App.Path 'start dir, might be "C:\" or so also
CommonDialog1.FileName = "Select a Directory" 'Something in filenamebox
CommonDialog1.Flags = cdlOFNNoValidate + cdlOFNHideReadOnly
CommonDialog1.Filter = "Directories|*.~#~" 'set files-filter to show dirs only
CommonDialog1.CancelError = True 'allow escape key/cancel
CommonDialog1.ShowSave 'show the dialog screen
If Err <> 32755 Then ' User didn't chose Cancel.
Me.SDir.Text = CurDir
End If
ChDir sTempDir 'restore path to what it was at entering
End Sub
En utilisant ce code, l'utilisateur doit entrer un nom pour un fichier qui retournera un nom de fichier avec une extension de ~ # ~ code> et si cela ira à l'intérieur du dossier en sélectionnant le bouton Ouvrir et sans saisir un nom. ne fonctionne pas;).