without with sending mail macro from application email vba outlook

with - sending a email from excel vba



Outlook 2003/VBA Movin E-Mails sin cambiar la fecha (3)

Encontré la solución: en la subcarpeta donde mueve el correo electrónico, simplemente agregue una columna para el campo "fecha de creación" en lugar de "fecha de recepción" y ordene con este campo ... ¡trabajo hecho!

Arrecife

Uso una macro en Outlook 2003 para mover los correos electrónicos seleccionados a una carpeta específica. El movimiento funciona, pero lamentablemente la fecha de recepción se sobrescribe a la hora actual. Alguna idea sobre cómo prevenir esto.

Yo uso este código:

Sub verschiebenInOrdner() On Error Resume Next Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem Set objNS = Application.GetNamespace("MAPI") Set objInbox = objNS.GetDefaultFolder(olFolderInbox) Set objFolder = objNS.Folders.Item("2009").Folders.Item("In") If objFolder Is Nothing Then MsgBox "This folder doesn''t exist!", vbOKOnly + vbExclamation, "INVALID FOLDER" End If If Application.ActiveExplorer.Selection.Count = 0 Then Exit Sub End If For Each objItem In Application.ActiveExplorer.Selection If objFolder.DefaultItemType = olMailItem Then If objItem.Class = olMail Then objItem.UnRead = False objItem.Move objFolder End If End If Next Set objItem = Nothing Set objFolder = Nothing Set objInbox = Nothing Set objNS = Nothing End Sub

Gracias a la ayuda de 76mel, se me ocurrió esto:

Sub verschiebenInArchiv() Dim Session As Redemption.rDOSession Dim objFolder As Redemption.RDOFolder Dim objItem As Outlook.MailItem Dim objItem2 As Redemption.RDOMail Set Session = CreateObject("Redemption.RDOSession") Session.Logon Set objFolder = Session.Stores.Item("2009").IPMRootFolder.Folders("In") If Application.ActiveExplorer.Selection.Count = 0 Then Exit Sub End If For Each objItem In Application.ActiveExplorer.Selection Set objItem2 = Session.GetMessageFromID(objItem.EntryID, Session.Stores.DefaultStore.EntryID) objItem2.Move objFolder Next End Sub

Esto funciona cuando estoy en mi bandeja de entrada. ¿Alguien sabe cómo puedo configurar Store-ID en GetMessageFromID para el ID de la tienda en la que se realiza mi selección?

Editar: Gracias 76mel, estoy usando objItem.Parent.StoreID ahora para obtener el StoreID actual.


Su derecha ha habido algunos informes en la red diciendo que no funciona.

Parecería que VB6 no genera un error :(. Creo que la forma de abordar esto sería usar CDO o el "Redemption" defacto de la tercera parte. Hacer el movimiento real en segundo plano.

METRO

Actualización: Pruebe algo como esto ... No tengo VB en la máquina, así que no lo he probado. Pero entenderá.

Sub verschiebenInOrdner() On Error Resume Next Dim objNS As Outlook.NameSpace Dim objRDOSession As Redemption.RDOSession Dim objRDOFolder As Redemption.RDOFolder Dim objItem As Outlook.MailItem Dim objRDOMail As Redemption.RDOMail Set objNS = Application.GetNamespace("MAPI") Set objRDOSession = CreateObject("Redemption.RDOSession") objRDOSession.MAPIOBJECT = objNS.MAPIOBJECT ''or Logon Set objRDOFolder = Session.GetFolderFromPath("<YOUR PATH>") '' do your validation for folder and selection For Each objItem In Application.ActiveExplorer.Selection If objFolder.DefaultItemType = olMailItem Then If objItem.Class = olMail Then Set objRDOMail = objRDOSession.GetMessageFromID(objItem.EntryID) objRDOMail.UnRead = False objRDOMail.Move objRDOFolder End If End If Next Set objItem = Nothing Set objRDOMail = Nothing Set objRDOFolder = Nothing Set objRDOSession = Nothing Set objNS = Nothing End Sub


Tampoco me cambia la fecha en Outlook 2003. Si es un problema continuo para usted, trataría de obtener la fecha del artículo y sobrescribirlo después de transferirlo.