2017-10-10 44 views
1

私はOutlookで2つのアカウントを持っています。私は個人的で、もう1つは共有されています。私は共有メールボックスの電子メールを読んだり、未読にしたりしたい。私は電子メールの受信トレイで動作しているが、私の共有電子メールグループでは動作していないコードがあります。Excel VBAを使用してoutlookの共有電子メールで電子メールを読む方法

enter image description here

私のコードは以下の通りですエラーを示すその:

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

なぜ、「Else」の後ろに「:」という列がありますか? – Pac0

+0

わかりやすくするために、わかりやすさとメンテナンスのために、最後にラベル「GoTo」と の代わりに 'Return'または' End Sub'を使用することをお勧めします。 – Pac0

+0

このコードは個人アカウントでは動作しますが、共有アカウントでは機能しません。共有アカウントで実行するために必要な変更はありますか? –

答えて

2

こんにちはあなたは以下のコードを試してください(私はあなたの投稿コード上記の編集を持つ)と、またあなたに応じて、異常なコードを削除することができます必要。

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 
関連する問題