2013-06-11 3 views
3

J'essaie d'utiliser la fonction de sur cette page: http://www.outlookcode.com/d/code/getfolder.htm pour utiliser le chemin du dossier pour naviguer vers un dossier. (Je vais copier ce code sur le bas de cette question - je l'ai utilisé tel quel, non modifié du tout.) La raison pour laquelle je dois utiliser ceci est que la boîte de réception par défaut dans Outlook n'est pas la même que la boîte de réception être actif. Je connais le chemin de la boîte de réception pertinente en faisant un clic droit dessus et en touchant les propriétés, et en regardant l'emplacement.Récupère le dossier MAPI dans Outlook à partir du chemin du dossier

C'est le code que j'utilise:

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") 

Cela renvoie une erreur d'exécution 91, objet variable ou variable bloc non définie.

Je n'ai aucune idée de ce que cela signifie. Si vous pouviez m'aider à résoudre cette erreur, ce serait génial, et si vous avez un moyen d'éviter complètement ce problème, ce serait génial aussi. Merci!

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 

Répondre

7

J'ai trouvé la réponse. Il s'avère que c'est quelque chose de stupide, comme d'habitude :)

Set Inbox = GetFolder("\\[email protected]\inbox") 

a besoin d'être

Set Inbox = GetFolder("[email protected]/inbox") 

. Cela résout le problème. Je pensais que je laisse cela ici au cas où quelqu'un d'autre a ce problème, la solution est tout simplement de suivre le format donné ...

2

Il suffit d'ajouter cette ligne ...

strFolderPath = Remplacer (strFolderPath, "\\", "")

0

Apparemment, a besoin aussi cette ligne:

strFolderPath = Replace(strFolderPath, "\", "/") 

Mais après pré ligne importante.

Ainsi, dans le contexte:

strFolderPath = Replace(strFolderPath, "\\", "") 
strFolderPath = Replace(strFolderPath, "\", "/") 
Questions connexes