Я написал макрос Visual Basic для архивации вложений для Outlook 2007, но не нашел полностью удовлетворительного способа отображения средства выбора каталога из макроса Outlook. Теперь я мало знаю ни о Windows API, ни о программировании VB(A), но «стандартный» диалог файлов Windows, который я чаще всего вижу в приложениях Microsoft, кажется очевидным выбором, но он не кажется легкодоступным. из макросов Outlook.
В идеале средство выбора каталога должно, по крайней мере, позволять вручную вставлять путь к файлу/URI в качестве отправной точки для навигации, поскольку иногда у меня уже открыто окно проводника для того же каталога.
Каковы наилучшие варианты выбора каталогов в макросах Outlook?
Две вещи, которые я уже пробовал и не нашел полностью удовлетворительными, это (код упрощен и без обработки ошибок и, вероятно, также работает в более старых версиях Outlook):
1) Использование Shell.Application
, которое не позволяет мне фактически вставить начальную точку через буфер обмена или выполнять другие операции, такие как переименование папок:
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) Использование Office.FileDialog
из Microsoft Word 12.0 Object Library
(через инструменты/ссылки), а затем использование диалогового окна файла Word, которое каким-то образом появляется навсегда в моей системе Vista и не всегда фактически выводит Word на передний план. Вместо этого иногда Outlook блокируется, и диалоговое окно с файлом остается где-то в фоновом режиме:
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)
Любые другие идеи?