Holen Sie sich MAPI-Ordner in Outlook aus dem Ordnerpfad

Ich versuche die Funktion auf dieser Seite zu nutzen:http://www.outlookcode.com/d/code/getfolder.htm Verwenden Sie den Ordnerpfad, um zu einem Ordner zu navigieren. (Ich werde diesen Code unten in diese Frage kopieren - ich habe ihn unverändert verwendet.) Der Grund, warum ich dies verwenden muss, ist, dass der Standardeingang in Outlook nicht mit dem Eingang identisch ist, den ich benötige aktiv sein. Ich kenne den Pfad des relevanten Posteingangs, indem ich mit der rechten Maustaste darauf klicke und Eigenschaften drücke und den Standort betrachte.

Dies ist der Code, den ich benutze:

Set objOutlook = CreateObject("Outlook.Application", "localhost")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set Inbox = GetFolder("\\[email protected]\inbox")
Debug.Print Inbox '<-- This fails
Set InboxItems = Inbox.Items '<-- This also fails
InboxItems.SetColumns ("SentOn")

Dies gibt den Laufzeitfehler 91 zurück, Objektvariable oder With block variable not set.

Ich habe keine Ahnung, was das bedeutet. Wenn Sie mir helfen könnten, diesen Fehler zu beheben, wäre das großartig, und wenn Sie eine Möglichkeit hätten, dieses Problem vollständig zu vermeiden, wäre das auch großartig. Vielen Dank!

Public Function GetFolder(strFolderPath As String)As MAPIFolder
  ' strFolderPath needs to be something like 
  '   "Public Folders\All Public Folders\Company\Sales" or
  '   "Personal Folders\Inbox\My Folder"

  Dim objApp As Outlook.Application
  Dim objNS As Outlook.NameSpace
  Dim colFolders As Outlook.Folders
  Dim objFolder As Outlook.MAPIFolder
  Dim arrFolders() As String
  Dim I As Long
  On Error Resume Next

  strFolderPath = Replace(strFolderPath, "/", "\")
  arrFolders() = Split(strFolderPath, "\")
  Set objApp = Application
  Set objNS = objApp.GetNamespace("MAPI")
  Set objFolder = objNS.Folders.Item(arrFolders(0))
  If Not objFolder Is Nothing Then
    For I = 1 To UBound(arrFolders)
      Set colFolders = objFolder.Folders
      Set objFolder = Nothing
      Set objFolder = colFolders.Item(arrFolders(I))
      If objFolder Is Nothing Then
        Exit For
      End If
    Next
  End If

  Set GetFolder = objFolder
  Set colFolders = Nothing
  Set objNS = Nothing
  Set objApp = Nothing
End Function

Antworten auf die Frage(3)

Ihre Antwort auf die Frage