簡體   English   中英

使用Outlook VBA選擇Outlook郵件文件夾

[英]select outlook mail folder using Outlook VBA

我創建了一個VBA子例程,以在用戶窗體的列表框中的名稱中列出所有帶有“ NNN”文本的子文件夾-我有很多子文件夾,因此找到合適的子文件夾非常耗時。 此例程工作完美。

但是,我現在要做的是雙擊一個列表框項目,它在文件夾層次結構中“選擇”了該文件夾,從而節省了我手動查找它的時間(它可能會降低幾個級別)。

我有一個片段可以做到這一點:

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 Chart”

謝謝

我嘗試了以下簡單操作,以從路徑返回文件夾:

Function FolderFromPath(FolderPath As String) As Folder
    Dim F As Folder
    Dim arrFolders() As String
    Dim i As Integer
    Set myNamespace = Application.GetNamespace("MAPI")

    Set F = myNamespace.GetDefaultFolder(olFolderInbox)
    arrFolders = Split(FolderPath, "\")
    For i = 4 To UBound(arrFolders)
        Set F = F.Folders(arrFolders(i))
    Next
    Set FolderFromPath = F
 End Function

它從您的收件箱(可能不是您所需要的)開始,然后拆分路徑並進入路徑中的每個文件夾。

評論后更新,我忘了顯示如何使用它。 您可以這樣做:

Path = "\\first.last@company.com\Inbox\Folder1\Folder2"
Set Application.ActiveExplorer.CurrentFolder = FolderFromPath(Path)

Sam所描述的方法將做您想要的。 代碼有一個小問題。 索引沿路徑開始很遠。 如果初始參考收件箱,則4應該為2。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM