J'ai écrit une macro Visual Basic pour l'archivage de pièces jointes pour Outlook 2007, mais je n'ai pas trouvé une méthode totalement satisfaisante pour afficher un sélecteur de répertoire à partir de la macro Outlook. Maintenant, je ne connais pas grand-chose des API Windows ni de la programmation VB (A), mais la boîte de dialogue Windows "standard" que je vois le plus souvent dans les applications Microsoft semble être un choix évident, mais elle ne semble pas être facilement disponible à partir des macros d'Outlook.Sélecteur de répertoire pour macro Visual Basic dans MS Outlook 2007
Idéalement, le sélecteur de répertoire devrait au moins permettre de coller manuellement un chemin de fichier/URI comme point de départ pour la navigation, car j'ai parfois déjà une fenêtre Explorer ouverte pour le même répertoire.
Quels sont les meilleurs choix pour les sélecteurs de répertoire dans les macros Outlook?
Deux choses je l'ai déjà essayé et ne trouvent pas tout à fait satisfaisantes (le code est simplifié et w/o la gestion des erreurs et fonctionne probablement aussi dans les anciennes versions d'Outlook):
1) À l'aide Shell.Application
qui ne permet pas me coller en fait un point de départ via le presse-papier ou effectuer d'autres opérations comme des dossiers renommage:
Set objShell = CreateObject("Shell.Application")
sMsg = "Select a Folder"
cBits = 1
xRoot = 17
Set objBFF = objShell.BrowseForFolder(0, sMsg, cBits, xRoot)
path = objBFF.self.Path
2) Utilisation du Office.FileDialog
de Microsoft Word 12.0 Object Library
(via des outils/références), puis en utilisant la boîte de dialogue de fichier Word, qui prend en quelque sorte toujours sur mon système Vista à apparaît et n'amène pas toujours Word au premier plan. Au lieu de cela, parfois Outlook est bloqué et la boîte de dialogue de fichier est laissé quelque part attardait en arrière-plan:
Dim objWord As Word.Application
Dim dlg As Office.FileDialog
Set objWord = GetObject(, "Word.Application")
If objWord Is Nothing Then
Set objWord = CreateObject("Word.Application")
End If
objWord.Activate
Set dlg = objWord.FileDialog(msoFileDialogFolderPicker)
path = dlg.SelectedItems(1)
D'autres idées?