Outlook 2007 VBA: aplique acciones solo cuando esté en una cuenta de Outlook específica

StackOverflow https://stackoverflow.com/questions/9344617

  •  27-10-2019
  •  | 
  •  

Pregunta

Estoy usando el siguiente proyecto VBA para aplicar una cadena predeterminada al comienzo del campo de la asignatura con todos los correos electrónicos nuevos. Pero, solo quiero que este script funcione cuando Outlook se ha abierto en una cuenta específica (es decir, tengo 2 cuentas de usuario de Outlook/archivos PST, personales y comerciales, y solo quiero que la cadena de asignaturas se agregue a los correos electrónicos cuando estoy trabajando en el cuenta de negocios) dedos cruzados, gracias por su ayuda. Iglesia

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Send with 'Myrtleford Festival" at start of subject?", vbYesNo, "Send as Festival mail") = vbYes Then
        If (Left(Trim(Item.Subject), 11)) <> "The " Then
    Item.Subject = "The Myrtleford Festival 2012/ " + Item.Subject
    End If
End If

Final

¿Fue útil?

Solución 2

Está bien. De hecho, me topé con una solución totalmente infalible y elegante. En Outlook's Trust Center> Macro Security, seleccioné la opción para "Warn for All Macros". Ahora, cuando abro Outlook a cualquiera de mis perfiles, obtengo una ventana emergente preguntando si quiero habilitar/deshabilitar las macros. Dado que el script VBA es el único macro en ejecución, puedo filtrar fácilmente si se usa la cadena de sujeto predeterminada. Que funcionará el 100% del tiempo para siempre (ya que no puedo ver ninguna razón por la que usaré otro script de macro/VBA)

Otros consejos

Esta es la base de un enfoque.

Es en algún momento desde que he tenido múltiples cuentas pero, cuando lo hice, las carpetas de nivel superior eran muy diferentes. El siguiente código genera a la ventana inmediata los nombres de las carpetas de nivel superior. En mi sistema actual, esto daría:

Personal Folders
Archive Folders
Test Folders

Si sus dos cuentas tienen diferentes carpetas de nivel superior, puede distinguir sus cuentas de eso.

Si le gusta este enfoque, pero las carpetas de nivel superior son las mismas, tengo una rutina que busca una carpeta específica a cualquier profundidad en la jerarquía. Incluso si las carpetas principales son las mismas, supongo que algunos de los subcarpetas son diferentes.

Sub AnswerA()

  Dim InxIFLCrnt As Integer
  Dim TopLvlFolderList As Folders

  Set TopLvlFolderList = _
          CreateObject("Outlook.Application").GetNamespace("MAPI").Folders

  For InxIFLCrnt = 1 To TopLvlFolderList.Count
    Debug.Print TopLvlFolderList(InxIFLCrnt).Name
  Next

End Sub
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top