Para simplificar y agilizar el trabajo con muchos correos, es aconsejable insertar algunos automatismos. Este es el caso, por ejemplo, si recibes muchos correos de un determinado tipo que quieres asignar automáticamente a una determinada subcarpeta.
Ejemplo 1: Recibes muchos correos de tu tienda online con pedidos entrantes y quieres que se muevan automáticamente a una carpeta llamada «Pedidos«.
Ejemplo 2: Simplemente desea mover ciertos correos electrónicos seleccionados de la bandeja de entrada a una carpeta de archivo con un solo clic.
Por supuesto, también puede utilizar las funciones integradas de Outlook para crear reglas automáticas. La siguiente captura de pantalla muestra dónde encontrarlas.

Sin embargo, sin duda hay casos de uso en los que esta no es la herramienta adecuada de primera elección, por ejemplo, si desea desterrar todos los correos electrónicos marcados a una determinada sub carpeta con un solo clic. O si ya dispone de otra macro VBA, por ejemplo, para responder automáticamente a un correo electrónico, y en la misma macro desea marcar el correo de origen como leído y, a continuación, moverlo de la bandeja de entrada a otro lugar.
Código VBA: Mover correo electrónico a subcarpeta
La siguiente captura de pantalla y ejemplo de código muestran cómo mover uno o más correos electrónicos seleccionados a una sub carpeta de la Bandeja de entrada.

Este ejemplo de código recorre todos los correos electrónicos seleccionados en Outlook en el bucle For Each y, a continuación, los mueve a una carpeta especificada («All Mails»), que es una sub carpeta de la Bandeja de entrada.
Public Sub MoveMail()
Dim olItem As Outlook.MailItem
Dim objNS As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim destFolder Como Outlook.Folder
'Define la carpeta de destino; en este caso es "All mails", una subcarpeta de "Inbox".
Set objNS = GetNamespace("MAPI")
Set objFolder = objNS.Folders.GetFirst ' carpeta del buzón actual.
Set objFolder = objFolder.Folders("Inbox")
Set destFolder = objFolder.Folders("All Mails")
'Mover todos los correos seleccionados a la subcarpeta definida.
For Each olItem In Application.ActiveExplorer.Selection
olItem.Move destFolder
Siguiente olItem
End Sub
Para obtener el objeto de la subcarpeta, primero hay que definir el espacio de nombres Mapi (GetNamespace(«MAPI»)). Allí se determina el buzón correspondiente con objNS.Folders.GetFirst. Aquí usamos GetFirst porque el buzón relevante está en primer lugar en Outlook. Si tiene varios buzones de correo, puede navegar hasta ellos con GetNext o dirigirse a ellos directamente a través del índice utilizando .Item(number).
A continuación, defina la bandeja de entrada como una carpeta y acceda a su matriz de carpetas para definir la sub carpeta adecuada de la bandeja de entrada. Esta será la carpeta de destino a la que se moverán los correos electrónicos seleccionados.
Tenga en cuenta que para que el código funcione, varias referencias deben estar activadas en Referencias.
