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;).