有一个几百页的ppt,领导要求把褐色RGB(102, 51, 0)的文字,全部修改为黑色RGB(0, 0, 0),去掉加粗。使用AI生成了代码,自己调试了一下。表面很简单,难度在于一个文本框内有多种颜色的字体,即同一个文本框内有几种不同颜色的字。
VBA帮忙快速完成了任务,提前下班,特此记录。
Sub ChangeBrownTextToBlack()
Dim sld As Slide
Dim shp As Shape
Dim rng As TextRange
Dim i As Long, j As Long
Dim charColor As RGBColor
Dim charFont As Font
' 遍历所有幻灯片
For Each sld In ActivePresentation.Slides
' 遍历幻灯片中的所有形状
For Each shp In sld.Shapes
' 检查形状是否包含文本
If shp.HasTextFrame Then
' 获取文本范围
Set rng = shp.TextFrame.TextRange
' 如果文本包含多个段落,遍历每个段落
If rng.Paragraphs.Count > 1 Then
For i = 1 To rng.Paragraphs.Count
' 获取段落文本范围
Set rng2 = rng.Paragraphs(i)
' 遍历段落中的每个字符
For j = 1 To rng2.Characters.Count
' 检查字符颜色是否为褐色)
If rng2.Characters(j).Font.Color.RGB = RGB(102, 51, 0) Then
' 获取字符的字体对象
Set charFont = rng2.Characters(j).Font
rng2.Characters(j).Font.Bold = msoFalse
' 将字符颜色更改为黑色
rng2.Characters(j).Font.Color.RGB = RGB(0, 0, 0)
End If
Next j
Next i
Else
' 如果只有一个段落,则直接遍历字符
For j = 1 To rng.Characters.Count
If rng.Characters(j).Font.Color.RGB = RGB(102, 51, 0) Then
Set charFont = rng.Characters(j).Font
rng.Characters(j).Font.Bold = msoFalse
charFont.Color.RGB = RGB(0, 0, 0)
End If
Next j
End If
End If
Next shp
Next sld
End Sub
|