Visual Basic para Aplicaciones - Crear regla OUTLOOK

Life is soft - evento anual de software empresarial
 
Vista:

Crear regla OUTLOOK

Publicado por Javier (4 intervenciones) el 17/04/2018 11:30:41
Buenas,

Me gustaría saber alguien puede ayuarme. Quiero crear una regla en OUTLOOK. Quiero que cuando me llegue un correo con un determinado asunto pongamos XXXXXXX, entonces se abra un excel que tengo en una carpeta local. He estado mirando y no veo cual podría usar. También he mirado en las tareas programadas de windows pero no se tampoco que podría usar. Otra idea que tuve es crear una regla que ejecute una macro vba cuando llegue el correo, pero no me aparece esa opción al crear esa regla.

Si alguien sabe algo que me ayude por favor!

Gracias
Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 115
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Crear regla OUTLOOK

Publicado por Norberto (34 intervenciones) el 17/04/2018 13:23:18
Hola.

Prueba con esto:

Captura

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear regla OUTLOOK

Publicado por Javer (4 intervenciones) el 19/04/2018 10:36:33
Muchas gracias por la ayuda. Tengo otro problema que surge a raiz de esto, a ver si podéis ayudarme. Tengo el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub Application_NewMail()
 
    Dim olItem As Object
    Set olItem = Application.Session.GetDefaultFolder(olFolderInbox).Items.GetLast()
 
    Dim xlApp As Object
    Dim sourceWB As Workbook
    Dim sourceWS As Worksheet
    Dim ruta As String
 
    Dim strCol, strColC, strColD, strColE, strColF, strColG As String
 
    strColB = olItem.SenderName
    strColC = olItem.SenderEmailAddress
    strColD = olItem.Subject
    strColE = olItem.Body
    strColF = olItem.To
    strColG = olItem.ReceivedTime
 
    If Left(strColD, 5) = "ASUNTO" Then
 
        ruta = "C:\Users\NOMBRE_EXCEL.XLSM"
 
        Set xlApp = CreateObject("Excel.Application")
 
        With xlApp
            .Visible = True
            .EnableEvents = False
        End With
 
        Set sourceWB = Workbooks.Open(ruta)
 
    End If
 
End Sub

El problema es que cuando se ejecuta la macro abre el excel sin problema pero al terminar de ejecutarse la macro el Excel se cierra y me gustaría que se quedase abierto.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 115
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Crear regla OUTLOOK

Publicado por Norberto (34 intervenciones) el 20/04/2018 12:40:47
Hola.

En efecto, al crear un objeto y finalizar el procedimiento este se vacía. Si no tienes que manipular el libro de Excel desde el procedimiento de Outlook, puedes habrirlo de cualquiera de estas otras maneras:

1
Shell "Excel.exe " & ruta

o usando la API ShellExecute. ¿Cómo?

En un módulo pones el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Option Explicit
 
Const SW_SHOWDEFAULT = 10
 
Const SE_ERR_FNF = 2&
Const SE_ERR_PNF = 3&
Const SE_ERR_ACCESSDENIED = 5&
Const SE_ERR_OOM = 8&
Const SE_ERR_DLLNOTFOUND = 32&
Const SE_ERR_SHARE = 26&
Const SE_ERR_ASSOCINCOMPLETE = 27&
Const SE_ERR_DDETIMEOUT = 28&
Const SE_ERR_DDEFAIL = 29&
Const SE_ERR_DDEBUSY = 30&
Const SE_ERR_NOASSOC = 31&
Const ERROR_BAD_FORMAT = 11&
 
Private Declare Function GetDesktopWindow Lib "user32" () As Long
 
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpszOp As String, _
     ByVal lpszFile As String, ByVal lpszParams As String, _
     ByVal LpszDir As String, ByVal FsShowCmd As Long) _
     As Long
 
Function StartDoc(DocName As String) As Long
    Dim Scr_hDC As Long
    Scr_hDC = GetDesktopWindow()
    StartDoc = ShellExecute(Scr_hDC, "Open", DocName, _
    "", "C:\", SW_SHOWDEFAULT)
 
End Function

Y para abrir el archivo usas:

1
StarDoc Ruta

¿Qué ventaja tiene este segundo sistema? Que no tienes que hacer referencia a la aplicación ni a la ubicación de ésta ya que usa el programa predeterminado para abrir el archivo.

En cualquier caso ya no tienes que definir ni usar las variables de objeto para excel.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar