La bitácora de rodri

junio 15, 2011

macro archivado de mensajes en un pst

Filed under: outlook — xavier Rodriguez @ 2:54 pm

El siguiente código permite  mover los mensajes de nuestra bandeja de entrada a una carpeta de nombre  “inbox” en un  fichero local pst de nombre ” archivado”.

————————————————————————————–

Sub archivado()
‘ Mover mensajes seleccionados a la carpeta “inbox” en “Personal Folder”
‘ alt+1

On Error Resume Next

Dim oApp As Outlook.Application
Dim objFolder As Outlook.MAPIFolder
Set oApp = New Outlook.Application
Set objFolder = oApp.GetNamespace(“MAPI”).Folders(“archivado”).Folders(“inbox”)
Dim oEmail As Outlook.MailItem

‘Assume this is a mail folder
If objFolder Is Nothing Then
MsgBox “Esta carpeta no existe !!!!”, vbOKOnly + vbExclamation, “INVALID FOLDER”
End If

If Application.ActiveExplorer.Selection.Count = 0 Then
‘Require that this procedure be called only when a message is selected
Exit Sub
End If

For Each objItem In Application.ActiveExplorer.Selection
If objFolder.DefaultItemType = olMailItem Then
If objItem.Class = olMail Then
objItem.Move objFolder
End If
End If
Next

Set objItem = Nothing
Set objFolder = Nothing
Set objInbox = Nothing
Set objNS = Nothing

End Sub

2 comentarios »

  1. Buen dia Xavier:

    He hecho una macro en Outlook 2007 que me permite exportar los mensajes de mi bandeja de entrada a un archivo de Excel, la cual funciona perfectamente, pero tengo un inconveniente. Necesito validar si un mensaje de mi bandeja de entrada ha sido respondido, y si ha sido asi, en que fecha y hora se produjo esa respuesta. Podrias por favor ayudarme con un ejemplo de como podria validar esa parte??

    Te agradezco muchisimo por tu valiosa ayuda. Saludos

    Comentario por Alexander Sierra Canchila — marzo 27, 2016 @ 3:38 pm

    • Hola Alexander,
      Para validar si un mensaje de mi bandeja de entrada ha sido respondido seria algo parecido a este código:

      Dim objVariant As Variant
      Dim strDestFolder As StringDim lastverb, lastaction As String
      Dim propertyAccessor As Outlook.propertyAccessor

      If objVariant.Class = olMail Then

      Set propertyAccessor = objVariant.propertyAccessor

      lastverb = “http://schemas.microsoft.com/mapi/proptag/0x10810003”
      lastaction = propertyAccessor.GetProperty(lastverb)

      ‘ 102, 103, 104 are replied, forwarded, reply all
      If lastaction > 7 Then

      Para saber a que hora has recibido el mensaje seria algo parecido a este codigo:
      Sub getDateTest()
      Dim mySelection As Outlook.Selection
      Dim myItem As Outlook.MailItem
      Dim theDate As String
      Dim copyClip As String

      Const cMinute As Double = 6.94444444444444E-04 ‘ equals one minute

      Set mySelection = Application.ActiveExplorer.Selection
      If mySelection.Count = 0 Then
      Set mySelection = Nothing
      Exit Sub
      End If
      Set myItem = mySelection.Item(1)

      theDate = Format(Round(myItem.ReceivedTime / cMinute, 0) * cMinute, “mm/dd/yy hh:mm”)

      copyClip = theDate

      Call ClipBoard_SetData(copyClip)

      End Sub

      Saludos

      Comentario por xavier Rodriguez — marzo 29, 2016 @ 9:21 pm


RSS feed for comments on this post.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Blog de WordPress.com.

A %d blogueros les gusta esto: