saber recuperar que por los leer guardan filtrar esta donde correos correo como categorias carpeta archivados application vba outlook

vba - recuperar - Iterar todos los elementos de correo electrónico en una carpeta específica de Outlook



recuperar correos archivados outlook (3)

El formato es:

Set objFolder = objFolder.Folders("Inbox").Folders("mySubFolder1").Folders("mySubFolder2")

Como se aconseja en un comentario "mueve la siguiente línea de artículo a antes de la etiqueta ProgramExit"

¿Cómo puedo en una macro de Outlook VBA iterar todos los elementos de correo electrónico en una carpeta específica de Outlook (en este caso, la carpeta no pertenece a mi inbux personal sino que es una subcarpeta en la bandeja de entrada de un buzón compartido).

Algo como esto, pero nunca he hecho una macro de Outlook ...

For each email item in mailboxX.inbox.mySubfolder.items // do this next item

Intenté esto pero la subcarpeta de la bandeja de entrada no se encuentra ...

Private Sub Application_Startup() Dim objNS As Outlook.NameSpace Dim objFolder As Outlook.MAPIFolder Set objNS = GetNamespace("MAPI") Set objFolder = objNS.Folders("myGroupMailbox") Set objFolder = objFolder.Folders("Inbox/mySubFolder1/mySubFolder2") On Error GoTo ErrorHandler Dim Msg As Outlook.MailItem For Each Item In objFolder.Items If TypeName(Item) = "MailItem" Then Set Msg = Item If new_msg.Subject Like "*myString*" Then strBody = myItem.Body Dim filePath As String filePath = "C:/myFolder/test.txt" Open filePath For Output As #2 Write #2, strBody Close #2 End If End If ProgramExit: Exit Sub ErrorHandler: MsgBox Err.Number & " - " & Err.Description Resume ProgramExit Next Item End Sub


En mi caso, lo siguiente funcionó:

Sub ListMailsInFolder() Dim objNS As Outlook.NameSpace Dim objFolder As Outlook.MAPIFolder Set objNS = GetNamespace("MAPI") Set objFolder = objNS.Folders.GetFirst '' folders of your current account Set objFolder = objFolder.Folders("Foldername").Folders("Subfoldername") For Each Item In objFolder.Items If TypeName(Item) = "MailItem" Then '' ... do stuff here ... Debug.Print Item.ConversationTopic End If Next End Sub

Del mismo modo, también puede iterar a través de elementos de calendario:

Private Sub ListCalendarItems() Set olApp = CreateObject("Outlook.Application") Set olNS = olApp.GetNamespace("MAPI") Set olRecItems = olNS.GetDefaultFolder(olFolderTasks) strFilter = "[DueDate] > ''1/15/2009''" Set olFilterRecItems = olRecItems.Items.Restrict(strFilter) For Each Item In olFilterRecItems If TypeName(Item) = "TaskItem" Then Debug.Print Item.ConversationTopic End If Next End Sub

Tenga en cuenta que este ejemplo utiliza el filtrado y también .GetDefaultFolder(olFolderTasks) para obtener la carpeta integrada para los elementos del calendario. Si desea acceder a la bandeja de entrada, por ejemplo, use olFolderInbox .


Sub TheSub() Dim objNS As Outlook.NameSpace Dim fldrImAfter As Outlook.Folder Dim Message As Outlook.MailItem ''This gets a handle on your mailbox Set objNS = GetNamespace("MAPI") ''Calls fldrGetFolder function to return desired folder object Set fldrImAfter = fldrGetFolder("Folder Name Here", objNS.Folders) For Each Message In fldrImAfter.Items MsgBox Message.Subject Next End Sub

Función recursiva para recorrer todas las carpetas hasta que se encuentre el nombre de la carpeta especificada ....

Function fldrGetFolder( _ strFolderName As String _ , objParentFolderCollection As Outlook.Folders _ ) As Outlook.Folder Dim fldrSubFolder As Outlook.Folder For Each fldrGetFolder In objParentFolderCollection ''MsgBox fldrGetFolder.Name If fldrGetFolder.Name = strFolderName Then Exit For End If If fldrGetFolder.Folders.Count > 0 Then Set fldrSubFolder = fldrGetFolder(strFolderName, fldrGetFolder.Folders) If Not fldrSubFolder Is Nothing Then Set fldrGetFolder = fldrSubFolder Exit For End If End If Next End Function