Hen*_*und 5 powerpoint vba powerpoint-vba powerpoint-2013
我有一个150张幻灯片的powerpoint演示文稿,我想根据公司的品牌重塑努力进行修改.我们以前的绿松石色已用于文字,线条,形状和形状填充.我想构建一个贯穿整个演示文稿的VBA脚本,并一举修改所有幻灯片,并用我们新的深灰色替换这种蓝色.
旧的企业颜色是RGB(0,176,240) - 绿松石
新的企业颜色是RGB(71,67,65) - 深灰色
我在互联网上尝试过多种不同的vba,但无法让它正常工作.以下是旧颜色的典型幻灯片的屏幕截图 - 所有蓝色项目都应更改为深灰色:

来自一个有用的论坛成员的这段VBA代码非常适合填充形状 - 如果可以重新设计包含任何文本和形状轮廓和线条,那么它将是完美的.
Sub ChangeShapeColor()
Dim oSh As Shape
Dim oSl As Slide
' Look at each slide in the current presentation:
For Each oSl In ActivePresentation.Slides
' Look at each shape on each slide:
For Each oSh In oSl.Shapes
' IF the shape's .Fill.ForeColor.RGB = turqoise color:
If oSh.Fill.ForeColor.RGB = RGB(0, 176, 240) Then
' Change it to corporate dark grey:
oSh.Fill.ForeColor.RGB = RGB(71, 67, 65)
End If
Next oSh
Next oSl
End Sub
Run Code Online (Sandbox Code Playgroud)
提前致谢,
这应该让你更近一步,虽然我可能会把它重写为你可以传递lFindColor和lReplaceColor的函数.
Sub ReplaceColors()
Dim lFindColor As Long
Dim lReplaceColor As Long
Dim oSl As Slide
Dim oSh As Shape
Dim x As Long
lFindColor = RGB(255, 128, 128)
lReplaceColor = RGB(128, 128, 255)
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
With oSh
' Fill
If .Fill.ForeColor.RGB = lFindColor Then
.Fill.ForeColor.RGB = lReplaceColor
End If
' Line
If .Line.Visible Then
If .Line.ForeColor.RGB = lFindColor Then
.Line.ForeColor.RGB = lReplaceColor
End If
End If
' Text
If .HasTextFrame Then
If .TextFrame.HasText Then
For x = 1 To .TextFrame.TextRange.Runs.Count
If .TextFrame.TextRange.Runs(x).Font.Color.RGB = lFindColor Then
.TextFrame.TextRange.Runs(x).Font.Color.RGB = lReplaceColor
End If
Next
End If
End If
End With
Next
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13563 次 |
| 最近记录: |