我有一个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
提前谢谢你,
发布于 2015-03-19 23:00:57
这应该会让您更近一步,尽管我可能会将它重写为一个函数,您可以将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
发布于 2020-01-29 03:42:47
我想添加另一个解决方案,而不是使用VBA。这可能有点老生常谈,但它工作得非常好。其思想是进入pptx文件并对颜色代码执行查找和替换操作。这将替换整个演示文稿中出现的所有特定颜色(可以是普通文本、阴影、图形的某些部分、表格的边框等)。
步骤1.创建原始Powerpoint文件的备份!
步骤2.如果演示文稿的扩展名为.ppt,请在Powerpoint中打开它,然后再次将其另存为.pptx。
步骤3.将扩展名.pptx更改为.zip (并忽略任何来自Window的警告)。例如,将"my_presentation.pptx“更改为"my_presentation.zip”。这样做的原因是pptx文件实际上是zip文件。通过将文件重命名为.zip,您将能够将其解压缩。
步骤4.解压文件。您将获得一个包含大量xml文件(可能还有其他文件)的文件夹(和子文件夹)。在这些xml文件中的某个地方一定有颜色定义,尽管我们不知道确切的位置。
步骤5.确定新旧颜色的十六进制代码。例如,如果旧颜色是青绿色(rgb: 0,176,240),则其十六进制代码为00B0F0。如果新颜色是深灰色(rgb: 71,67,55),则其十六进制代码为474337。
步骤6.下载、安装并打开(免费)文本编辑器Notepad++。(你可以在这里找到:https://notepad-plus-plus.org/。)
步骤7.在Notepad++中,单击"Search >> Find in Files...“。这允许您一次在所有提取(xml-)文件中执行查找和替换操作。选择正确的文件夹,搜索旧的颜色代码(00B0F0)并将其替换为新的颜色代码(474337)。确保搜索也在子文件夹中执行。See this screenshot.
zip步骤8.现在再次将文件压缩为文件。选择之前提取的文件,而不选择其父文件夹,这一点很重要。(如果您意外地在父文件夹的级别上进行压缩,则会在zip文件的文件夹层次结构中创建一个额外的层,这将使Powerpoint感到困惑。)
步骤9.将新创建的压缩文件的扩展名更改为.pttx (并忽略任何来自Windows的警告)。
警告:您在步骤7中搜索的十六进制颜色代码也可能显示为完全不同的内容(例如电话号码或其他任何内容)。如果你有可能这样搞砸你的演示文稿,那就搜索val="00B0F0",而不仅仅是00B0F0。
https://stackoverflow.com/questions/29115072
复制相似问题