使用 VBA 在 Powerpoint 中动态着色形状

问题描述 投票:0回答:1

我想要在演示文稿中使用颜色编码的欧洲地图。

根据特定的风险评分,各个国家/地区的颜色应为绿色、黄色或红色。我认为这可以通过将 PPT 链接到 Excel 然后进行一些条件格式化来实现。

我创建了一张由欧洲国家形状组成的地图,并相应地命名了每个形状。我使用如下代码在 Excel 中创建了动态着色:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B2") = "opposed" Then
    ActiveSheet.Shapes.Range(Array("Austria")).Select
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
    If Range("B2") = "undecided" Then
        ActiveSheet.Shapes.Range(Array("Austria")).Select
        Selection.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent4
    Else
        If Range("B2") = "approving" Then
            ActiveSheet.Shapes.Range(Array("Austria")).Select
            Selection.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent6
        End If
    End If
End If
End Sub

我将风险评估(“反对”、“未决定”、“赞成”)放入一个列中,然后询问那个值是多少,然后相应地改变形状的颜色。该代码有效。如果任何值发生变化,地图就会发生变化。

现在我需要在 PowerPoint 中使用它。 PowerPoint VBA 似乎很不一样,我找不到任何关于如何使它工作的信息。我尝试了以下作为概念证明:

Sub coloring()
If ActivePresentation.Slides(1).Shapes("Rect1").TextFrame.TextRange.Text.Value = "RED" Then ActivePresentation.Slides(1).Shapes("Rect2").Fill.ForeColor.RGB = RGB(255, 0, 0)
End Sub

我想怎么做
创建一个(隐藏的)幻灯片,其中包含所有信息(在文本框或带有单元格或类似内容的表格中)。
创建多个引用隐藏幻灯片内容的幻灯片,并根据隐藏幻灯片上的内容显示颜色编码信息。

vba colors powerpoint shapes
1个回答
1
投票

由于每个应用程序的 VBA 都严格遵循应用程序自己的对象模型,如果您习惯于不同应用程序的 OM 而不是您正在使用的 OM,那么每个应用程序都会显得很奇怪。

这是一个工作示例。您的代码几乎就在那里:

Sub coloring()

' Using With/End With can save a lot of typing:
With ActivePresentation.Slides(1)

If .Shapes("Rect1").TextFrame.TextRange.Text = "RED" Then
    ' It's a good idea to make sure the fill is visible
    ' before setting it
    .Shapes("Rect2").Fill.Visible = True
    .Shapes("Rect2").Fill.ForeColor.RGB = RGB(255, 0, 0)
End If

End With

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.