![]() |
|
|
|
#1
|
|||
|
|||
|
Hello,
PowerPoint does not offer the same detailed features in Find & Replace as Word does. It also doesn't accept wild cards. Therefore, I'm looking for a PowerPoint macro to change all words between quotes to italic. Would anyone be able to help? Thanks, Karen |
|
#2
|
|||
|
|||
|
Not easy!
Here's a possible start for you to work on if you have multiple quotes in one textframe you will need to work on the pattern. Code:
Sub regxz()
Dim oMatches As Object
Dim i As Long
Dim otr As TextRange2
Dim osld As Slide
Dim oshp As Shape
Dim regX As Object
Dim strmatch As String
Set regX = CreateObject("VBScript.RegExp")
' this allows for smart curly quotes but do not mix smart and straight
strmatch = "[" & Chr(147) & "," & Chr(34) & "]" & ".*" & "[" & Chr(148) & "," & Chr(34) & "]"
For Each osld In ActivePresentation.Slides
For Each oshp In osld.Shapes
If oshp.HasTextFrame Then
If oshp.TextFrame2.HasText Then Set otr = oshp.TextFrame2.TextRange
On Error Resume Next
With regX
.Global = True
.IgnoreCase = True
.Pattern = strmatch
Set oMatches = .Execute(otr)
For i = 0 To oMatches.Count - 1
otr.Characters(oMatches(i).FirstIndex + 1, Len(oMatches(i).Value)).Font.Italic = True
Next i
End With
End If
Next oshp
Next osld
End Sub
|
|
#3
|
|||
|
|||
|
Quote:
You are absolutely amazing!!! I spent hours searching the internet and trying macros but I didn't know how to manipulate the code for italic. This worked perfectly!!! Thanks so much!!! Karen |
|
#4
|
|||
|
|||
|
You should probably use ".*?" instead of ".*" BTW to turn off a greedy match
|
|
#5
|
|||
|
|||
|
Hi John,
I'm sorry to disturb you. The macro works great if copy is in a text box by itself. My colleague that designs the slides creates a shape then inserts the text box within the shape and all shapes are grouped on the one slide. Is there a way to manipulate the code to get within those shapes? Thanks so much for your assistance. Karen |
|
#6
|
|||
|
|||
|
You could try something based on this:
Code:
Sub regxz()
Dim L As Long
Dim otr As TextRange2
Dim osld As Slide
Dim oshp As Shape
For Each osld In ActivePresentation.Slides
For Each oshp In osld.Shapes
Select Case oshp.Type
Case Is = msoGroup
For L = oshp.GroupItems.Count To 1 Step -1
If oshp.GroupItems(L).HasTextFrame Then
If oshp.GroupItems(L).TextFrame2.HasText Then Set otr = oshp.GroupItems(L).TextFrame2.TextRange
End If
Call fixTR(otr)
Next L
Case Else
If oshp.HasTextFrame Then
If oshp.TextFrame2.HasText Then Set otr = oshp.TextFrame2.TextRange
Call fixTR(otr)
End If
End Select
Next oshp
Next osld
End Sub
Sub fixTR(otr As TextRange2)
On Error Resume Next
Dim oMatches As Object
Dim i As Long
Dim regX As Object
Dim strmatch As String
strmatch = "[" & Chr(147) & "," & Chr(34) & "]" & ".*?" & "[" & Chr(148) & "," & Chr(34) & "]"
Set regX = CreateObject("VBScript.RegExp")
With regX
.Global = True
.IgnoreCase = True
.Pattern = strmatch
Set oMatches = .Execute(otr)
For i = 0 To oMatches.Count - 1
otr.Characters(oMatches(i).FirstIndex + 1, Len(oMatches(i).Value)).Font.Italic = True
Next i
End With
End Sub
|
|
#7
|
|||
|
|||
|
Hi John,
I had a new report and tried the macro. It changed words in quotes to italic which I needed but it also changed words between commas to italic. Can that be fixed? Thanks so much, Karen |
|
#8
|
|||
|
|||
|
I'm out of Office right now but try replacing
strmatch = "[" & Chr(147) & "," & Chr(34) & "]" & ".*?" & "[" & Chr(148) & "," & Chr(34) & "]" WITH strmatch = "[" & Chr(147) & "|" & Chr(34) & "]" & ".*?" & "[" & Chr(148) & "|" & Chr(34) & "]" |
|
#9
|
|||
|
|||
|
Hi John,
That seems to have worked. You're amazing!!! Thank you so much!!! Karen
|
|
#10
|
|||
|
|||
|
John, Karen told me you are amazing and I need some help in excel. I posted it in the excel forum, but if you have time...would greatly appreciate your expertise.
https://www.msofficeforums.com/excel...tml#post147953 Thank you Kevin |
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Macro needed to copy Powerpoint presentation and sections | Marrick13 | PowerPoint | 0 | 06-19-2017 07:34 AM |
Help Needed with Macro to Change Formulas to Text Using Ranges
|
rsrasc | Excel Programming | 2 | 11-29-2016 02:31 PM |
How to replace straight quotes with smart quotes in existing document
|
PABwriter | Word | 4 | 05-27-2016 03:36 PM |
repel Macro vba help is needed for interactive powerpoint.
|
Mrs Blobby | PowerPoint | 1 | 04-16-2014 10:58 PM |
Regular Expressions: match words within quotes?
|
tinfanide | Word VBA | 3 | 02-02-2013 10:07 PM |