我为 Outlook 2007 的附件归档编写了一个 Visual Basic 宏,但没有找到一种完全令人满意的方法来显示 Outlook 宏中的目录选择器。现在,我对 Windows API 或 VB(A) 编程都不太了解,但我在 Microsoft 应用程序中最常看到的“标准”Windows 文件对话框似乎是一个显而易见的选择,但它似乎并不容易获得来自 Outlook 的宏。
理想情况下,目录选择器至少应该允许手动粘贴文件路径/URI 作为导航的起点,因为有时我已经为同一目录打开了一个资源管理器窗口。
Outlook 宏中目录选择器的最佳选择是什么?
我已经尝试过但没有完全令人满意的两件事是(代码被简化并且没有错误处理,并且可能也可以在旧版 Outlook 中运行):
1)使用Shell.Application
which 不允许我通过剪贴板实际粘贴起点或执行其他操作,例如重命名文件夹:
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
from 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)
还有其他想法吗?