Download sample demo:
'
---------------------------------------------------------------------
' Copyright ©1999-2007, Shyam Pillai, All Rights Reserved.
' ---------------------------------------------------------------------
' You are free to use this code within your own applications, add-ins,
' documents etc but you are expressly forbidden from selling or
' otherwise distributing this source code without prior consent.
' This includes both posting free demo projects made from this
' code as well as reproducing the code in text or html format.
' ---------------------------------------------------------------------
Option Explicit
' Searches for the specified text in all types of shapes
' and highlights only the text.
' The TextRange is passed to apply the formatting
' of the text for highlighting
Sub FindTextAndHighlightShape(SearchString As String, _
oHighlightTextRange As TextRange)
Dim oSld As Slide
Dim oShp As Shape
Dim oTxtRng As TextRange
Dim oTmpRng As TextRange
On Error Resume Next
Set oSld = SlideShowWindows(1).View.Slide
For Each oShp In oSld.Shapes
' I am looking for beveled autoshape since these contain the
' text and formatting and hence should be excluded from the
' search
If oShp.Type = msoAutoShape Then
If oShp.AutoShapeType = msoShapeBevel Then
GoTo NextShape
End If
End If
If oShp.HasTextFrame Then
If oShp.TextFrame.HasText Then
' One needs to locate the text as well as iterate
' for multiple instances of the text
Set oTxtRng = oShp.TextFrame.TextRange
Set oTmpRng = oTxtRng.Find(SearchString, , , True)
Do While Not oTmpRng Is Nothing
' Highlight the text with the desired color
oTmpRng.Font.Color = oHighlightTextRange.Font.Color
Set oTmpRng = oTxtRng.Find(SearchString, _
After:=oTmpRng.Start + oTmpRng.Length, _
WholeWords:=True)
Loop
End If
End If
NextShape:
Next oShp
End Sub
' Assign this macro to the shapes containing the search text.
Sub ClickHere(oShp As Shape)
' oShp contains reference to the shape that was clicked
' to fire the macro.
' The text in the shape is passed to the search routine.
' The text range contains the text formating to be applied
' while highlighting the found text.
Call FindTextAndHighlightShape(oShp.TextFrame.TextRange.Text, _
oShp.TextFrame.TextRange)
Call RefreshSlide
End Sub
Sub RefreshSlide()
On Error Resume Next
With SlideShowWindows(1).View
.GotoSlide .CurrentShowPosition
End With
End Sub
|