2017-10-10 4 views
1

J'ai 2 comptes dans Outlook One est mon personnel et un autre est partagé. Je veux lire ou lire des e-mails de ma boîte aux lettres partagée. J'ai un code qui fonctionne avec ma boîte de réception mais ne fonctionne pas avec mon groupe de messagerie partagé.Comment lire les courriels dans les courriels partagés dans Outlook en utilisant Excel VBA

Son montrant une erreur enter image description here

mon code est ci-dessous:

Sub OutlookTesting() 
Dim folders As Outlook.folders 
Dim Folder As Outlook.MAPIFolder 
Dim iRow As Integer 
Dim Pst_Folder_Name 
Dim MailboxName 
Dim UnRow As Integer 
Dim RESS As Outlook.Recipient 
Dim Flag As Integer 


'Mailbox or PST Main Folder Name (As how it is displayed in your Outlook Session) 
MailboxName = "[email protected]" 'Mailbox Folder or PST Folder Name (As how it is displayed in your Outlook Session) 
Pst_Folder_Name = "Inbox" 

' subfolder name 
Dim subFolderName As String 
subFolderName = "XYZ" 

Set Folder = Outlook.Session.folders(MailboxName).folders(Pst_Folder_Name) 
If Folder = "" Then 
    MsgBox "Invalid Data in Input" 
    GoTo end_lbl1: 
End If 

'Rad Through each Mail and export the details to Excel for Email Archival 

For iRow = 1 To Folder.Items.Count 
    If (Folder.Items(iRow).UnRead) Then 
     Flag = 0 
     Set Res = Folder.Items(iRow).Recipients 
      For Each RESS In Res 
       If RESS.Name = "ABCD" Or RESS.Name = "PQRS" Then 
        Flag = 1 
       End If 
      Next 
      If Flag = 1 Then 
        Folder.Items(iRow).UnRead = True 
        Else: Folder.Items(iRow).UnRead = False 
       End If 
    End If 
Next iRow 
MsgBox "Outlook Mails Extracted to Excel" 
end_lbl1: 
End Sub 
+0

Pourquoi existe-t-il une colonne ':' après 'Else'? – Pac0

+0

Sur une note de côté, je recommande d'utiliser 'Return' ou' End Sub' à la place du 'GoTo' et de l'étiquette à la fin, pour plus de clarté et de maintenabilité. – Pac0

+0

Ce code fonctionne dans un compte personnel mais pas dans un compte partagé. Donc, y a-t-il des changements nécessaires pour fonctionner dans un compte partagé? –

Répondre

2

Salut vous pouvez essayer avec le code ci-dessous (je modifier votre dessus de code affiché) et de supprimer également le code inhabituel selon votre avoir besoin.

Sub OutlookTesting() 
Dim folders As Outlook.folders 
Dim folder As Outlook.MAPIFolder 
Dim iRow As Integer 
Dim Pst_Folder_Name 
Dim MailboxName 
Dim UnRow As Integer 
Dim RESS As Outlook.Recipient 
Dim Flag As Integer 
Dim olApp As Outlook.Application 
Dim olNS As Outlook.Namespace 
Dim olfldr As Outlook.MAPIFolder 
Dim foldername As Outlook.MAPIFolder 
Dim sharedemail As Outlook.Recipient 


Set olApp = New Outlook.Application 
Set olNS = olApp.GetNamespace("MAPI") 
Set sharedemail = olNS.CreateRecipient("[email protected]") 
Set olfldr = olNS.GetSharedDefaultFolder(sharedemail, olFolderInbox) 


Set folder = olfldr 

If folder = "" Then 
    MsgBox "Invalid Data in Input" 
    GoTo end_lbl1: 
End If 

'Rad Through each Mail and export the details to Excel for Email Archival 

For iRow = 1 To folder.Items.Count 
    If (folder.Items(iRow).UnRead) Then 
     Flag = 0 
     Set Res = folder.Items(iRow).Recipients 
      For Each RESS In Res 
       If RESS.Name = "XYZ" Or RESS.Name = "ABC" Then 
        Flag = 1 
       End If 
      Next 
      If Flag = 1 Then 
        folder.Items(iRow).UnRead = True 
        Else: folder.Items(iRow).UnRead = False 
       End If 
    End If 
Next iRow 
MsgBox "Outlook Mails Extracted to Excel" 
end_lbl1: 
End Sub