2016-07-13 4 views
0

Ich bin ein Neuling bei VBA und zusammen eine Reihe von Code zusammen, um mein Ziel zu erreichen. Ich versuche, einen bestimmten Text im Lesebereich von Outlook hervorzuheben. Wenn Sie also auf eine bestimmte E-Mail klicken, wird der Text des Lesers angezeigt und der Text hervorgehoben, in diesem Fall das Wort "Test".Markieren Sie Text im Lesebereich in Outlook 2013 (VBA)

Momentan passiert nichts. Wenn ich jedoch auf die E-Mail doppelklicke, um sie in einem neuen Fenster zu öffnen, wird die Vorschau dahinter im Lesebereich jetzt korrekt hervorgehoben. Es scheint so, als würde das Ereignis, auf das es ausgelöst wird, nicht in der Vorschau angezeigt, dann wirken sich die Änderungen auf ein Fenster aus, das nicht mehr oben ist. Hier

ist der Code, den ich derzeit habe:

Public WithEvents myItem As Outlook.MailItem 

Private Sub Application_ItemLoad(ByVal Item As Object) 
If Item.Class = olMail Then 
    Set myItem = Item 
End If 
End Sub 


Private Sub myItem_Open(Cancel As Boolean) 
EventsDisable = True 

Dim msg As Outlook.MailItem 
Dim insp As Outlook.Inspector 

Set insp = Application.ActiveInspector 

If insp.CurrentItem.Class = olMail Then 
Set msg = insp.CurrentItem 

If insp.EditorType = olEditorWord Then 
Set hed = msg.GetInspector.WordEditor 
Set appWord = hed.Application 
Set rng = appWord.Selection 
rng.Find.HitHighlight ("Test") 
End If 

End If 

Set appWord = Nothing 
Set insp = Nothing 
Set rng = Nothing 
Set hed = Nothing 
Set msg = Nothing 
EventsDisable = False 

End Sub 

Antwort

0

Nein nicht Active verwenden - es ist in keinem Zusammenhang mit dem von dem Explorer angezeigt. Versuchen Sie Folgendes

set hed = Application.ActiveExplorer.Selection(1).GetInspector.WordEditor 

Beachten Sie, dass, wenn das Element in einem Inspektoren angezeigt wird und im aktiv Explorer ausgewählt werden, über den Änderungstext nur im Inspektoren Highlight wird, wird nicht Vorschaufenster beeinflusst werden . Wenn Sie wollen immer mit dem Vorschaufenster arbeiten, Ihr könnte aussehen wollen in Redemption und seine SafeExplorer Objekt, das explizit den Lesebereich aussetzt:

set sExplorer = CreateObject("Redemption.SafeExplorer") 
sExplorer.Item = Application.ActiveExplorer 
set hed = sExplorer.ReadingPane.WordEditor 
Set appWord = hed.Application 
Set rng = appWord.Selection 
rng.Find.HitHighlight ("Test")