Я написал макрос 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)
Есть еще идеи?