Domanda

Sto usando il seguente progetto VBA per applicare una stringa predefinita all'inizio del campo dell'oggetto con tutte le nuove e -mail. Ma - voglio che questo script funzioni solo quando Outlook è stato aperto in un account specifico (cioè ho 2 account utente di Outlook/file PST - Personal & Business - e desidero la stringa dell'oggetto aggiunta solo alle e -mail quando lavoro nel Account aziendale) dita incrociate - grazie per il tuo aiuto. Kirk

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

Fine sub

È stato utile?

Soluzione 2

Ok bello. In effetti mi sono imbattuto in una soluzione totalmente infallibile ed elegante. In Outlook's Trust Center> Macro Security, ho selezionato l'opzione per "Warn per tutte le macro". Ora, quando apro Outlook a uno qualsiasi dei miei profili, ricevo un pop-up chiedendo se voglio abilitare/disabilitare le macro. Poiché lo script VBA è l'unica macro in esecuzione, posso facilmente filtrare se viene utilizzata la stringa soggetto predefinita. Che funzionerà al 100% delle volte per sempre (dal momento che non riesco a vedere alcun motivo per cui userò mai un altro script macro/VBA)

Altri suggerimenti

Questa è la base di un approccio.

È qualche tempo da quando ho avuto più account ma, quando l'ho fatto, le cartelle di alto livello erano molto diverse. Il codice seguente emette alla finestra immediata i nomi delle cartelle di livello superiore. Sul mio sistema attuale questo darebbe:

Personal Folders
Archive Folders
Test Folders

Se i tuoi due account hanno cartelle di alto livello, puoi distinguere i tuoi account da quello.

Se ti piace questo approccio ma le cartelle di livello superiore sono uguali, ho una routine che cerca una cartella specifica a qualsiasi profondità nella gerarchia. Anche se le cartelle principali sono uguali, presumo che alcuni dei sotto-conduttori siano diversi.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top