Outlook 2007 VBA - Applicare l'azione solo quando in Conto Outlook specifico
-
27-10-2019 - |
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
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