我想要在演示文稿中使用颜色编码的欧洲地图。
根据特定的风险评分,各个国家/地区的颜色应为绿色、黄色或红色。我认为这可以通过将 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 都严格遵循应用程序自己的对象模型,如果您习惯于不同应用程序的 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