MS Outlook 2007中的Visual Basic宏的目录选择器

时间:2008-09-02 11:09:51

标签: outlook outlook-vba outlook-2007 filedialog

我编写了一个用于存档Outlook 2007附件的Visual Basic宏,但没有找到一种完全令人满意的方式来显示Outlook宏中的目录选择器。现在,我对Windows API或VB(A)编程知之甚少,但我在Microsoft应用程序中最常见的“标准”Windows文件对话框似乎是一个明显的选择,但它似乎并不容易获得来自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的{​​{1}}(通过工具/参考),然后使用Word的文件对话框,在我的Vista系统上以某种方式永远显示并且并不总是实际将Word带到前景。相反,有时Outlook被阻止,文件对话框在后台的某处停留:

Microsoft Word 12.0 Object Library

还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

您最好的选择可能就是使用Windows32 API。有关如何与API交互的示例VBA代码,请参阅this MSDN article

本文概述了一些不同的技术,但我建议在文章中搜索“COMDLG32.dll”并按照该部分中列出的步骤进行操作。