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.