Замените указанный цвет текста другим цветом на нескольких слайдах одной презентации Powerpoint.

2405
Programmer

У меня есть презентация, в которой у меня есть более 200 слайдов. Evevry слайд содержит несколько строк. В каждой строке каждого слайда есть часть текста, выделенная синим цветом. Я хочу изменить этот синий цвет на другой.

Я хочу, чтобы это изменение было отражено на всех слайдах. Это означает, что конкретный цвет должен быть заменен моим новым цветом, и он не должен влиять на другой цвет текста, потому что он другого цвета, потому что я хочу подчеркнуть этот момент.

Короче говоря, замена определенного цвета в определенной части текста другим цветом во всех слайдах.

0

1 ответ на вопрос

1
Steve Rindsberg

Here's an answer from the PowerPoint FAQ at http://www.pptfaq.com

Problem

You have lots of text in lots of slides. Some of it has been set to a color that you now need to change. This will help.

Option Explicit Sub ChangeTextColors() Dim oSl As Slide Dim oSh As Shape Dim lCol As Long Dim lRow As Long Dim x As Long Dim lOldColor As Long Dim lNewColor As Long ' EDIT THESE TO THE COLORS YOU WANT TO CHANGE FROM and TO lOldColor = RGB(100, 200, 100) lNewColor = RGB(200, 100, 200) For Each oSl In ActivePresentation.Slides For Each oSh In oSl.Shapes If oSh.HasTextFrame Then If oSh.TextFrame.HasText Then Call ChangeTextRange(oSh.TextFrame, lOldColor, lNewColor) End If End If If oSh.HasTable Then With oSh.Table For lCol = 1 To .Columns.Count For lRow = 1 To .Rows.Count Call ChangeTextRange(.Cell(lRow, lCol).Shape.TextFrame, lOldColor, lNewColor) Next Next End With End If ' this part is commented out because PPT 's buggy and ... sorry ... haven't quite figured it out yet: ' If oSh.HasSmartArt Then ' With oSh.SmartArt ' For x = 1 To .Nodes.Count ' Call ChangeTextRange(.Nodes(x).TextFrame2, lOldColor, lNewColor) ' Next ' End With ' End If If oSh.HasChart Then ' You're on your own, my friend End If Next Next End Sub Sub ChangeTextRange(oTextFrame As Object, lOldColor As Long, lNewColor As Long) Dim x As Long With oTextFrame.TextRange For x = 1 To .Runs.Count If .Runs(x).Font.Color.RGB = lOldColor Then .Runs(x).Font.Color.RGB = lNewColor End If Next End With End Sub 

Похожие вопросы