首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用outlook VBA选择Outlook邮件文件夹

使用outlook VBA选择Outlook邮件文件夹
EN

Stack Overflow用户
提问于 2018-05-29 20:09:04
回答 1查看 2.9K关注 0票数 0

我已经创建了一个VBA子例程,用于在用户表单的列表框中列出名称中包含"NNN“文本的任何和所有子文件夹-我有很多子文件夹,因此找到正确的子文件夹非常耗时。这个例程运行得很完美。

然而,我现在想要做的是双击一个列表框项目,它会“选择”文件夹层次结构中的文件夹,以节省我手动查找它的时间(可能是下几层)。

我有一个代码片段可以做到这一点:

代码语言:javascript
复制
Public Sub GetItemsFolderPath()
  Dim obj As Object
  Dim F As Outlook.MAPIFolder
  Dim Msg$
  Set obj = Application.ActiveWindow
  If TypeOf obj Is Outlook.Inspector Then
    Set obj = obj.CurrentItem
  Else
   Set obj = obj.Selection(1)
  End If
  Set F = obj.Parent
  Msg = "The path is: " & F.FolderPath & vbCrLf
  Msg = Msg & "Switch to the folder?"
  If MsgBox(Msg, vbYesNo) = vbYes Then
   Set Application.ActiveExplorer.CurrentFolder = F
  End If
End Sub

但是,如果我尝试将"F“替换为仅为字符串的文件夹路径,则会失败。因此,我的问题是,如何仅使用"paul@anymail.com\Inbox\03_Group Finance\00_Organization图表“这样的字符串作为文件夹路径来选择文件夹?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-07 04:22:35

Sam描述的方法将执行您想要的操作。代码中有一个小问题。索引开始沿着路径变得很远。如果初始引用是收件箱,则4应为2。

代码语言:javascript
复制
Function FolderFromPath(FolderPath As String) As Folder

    Dim F As Folder
    Dim arrFolders() As String
    Dim i As Long

    arrFolders = Split(FolderPath, "\")

    ' Initial reference is to the mailbox - array element 0
    Set F = Session.Folders(arrFolders(0))

    ' The next folder is array element 1
    For i = LBound(arrFolders) + 1 To UBound(arrFolders)
        Set F = F.Folders(arrFolders(i))
    Next

    Set FolderFromPath = F

 End Function


Public Sub GetItemsFolderPath_Test()

    Dim FPath As String

    FPath = "paul@anymail.com\Inbox\03_Group Finance\00_Organization Chart"

    Set ActiveExplorer.CurrentFolder = FolderFromPath(FPath)

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50584062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档