Я написал макрос Visual Basic для архивирования вложений для Outlook 2007, но не нашел полностью удовлетворительного способа отображения выбора папок из макроса Outlook. Теперь я не очень разбираюсь ни в Windows API, ни в программировании VB (A), но «стандартное» диалоговое окно Windows, которое я чаще всего вижу в приложениях Microsoft, кажется очевидным выбором, но, похоже, это не так просто. из макросов Outlook.Выбор каталога для макроса Visual Basic в MS Outlook 2007
В идеале, сборщик каталогов должен, по крайней мере, разрешить вручную вставить путь к файлу/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)
Другие идеи?