更改 PowerPoint 直方图图表中图表标题的文本颜色

Posted

技术标签:

【中文标题】更改 PowerPoint 直方图图表中图表标题的文本颜色【英文标题】:Change the text color of the chart title in a PowerPoint Histogram chart 【发布时间】:2018-09-03 01:04:38 【问题描述】:

我正在尝试更改 PowerPoint 中直方图图表标题的文本颜色。 这是我的工作:

var colorFormat = chart.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor;
colorFormat.RGB = ...;
// or
colorFormat.ObjectThemeColor = ...;

这适用于标准图表,如折线图。但它不适用于直方图、瀑布图、树状图等其他图表类型。

在这些情况下,设置 ObjectThemeColor 会将文本设置为黑色。设置RGB 确实设置了正确的颜色。但是,在这两种情况下,只要用户更改了选择,文本颜色就会跳回之前的颜色。

如何设置这些图表之一的标题的文本颜色? 我正在使用 VSTO 和 C#,但 VBA 解决方案同样受欢迎,只要它可以翻译成 C# 并且仍然有效。

【问题讨论】:

当我指定确切的图表对象(例如,Slides[1].Shapes[2].Chart)时,我可以将颜色应用于图表标题而不会丢失更改。您是否使用Selection 对象而不是其他方式(例如Shape.Name 属性)来识别图表?这可以解释当用户更改选择时颜色变化的损失。 @joeschwa:即使我不是从选择中识别出图表,结果也是一样的。我不知道为什么它对您有用 - 也许您使用的图表类型仍然有效? 我在 PowerPoint 2016 中使用直方图图表类型。您在分配 RGB 值时是否使用系统定义的颜色? (类似于colorFormat.RGB = Color.DarkOliveGreen.ToArgb())VSTO 可能需要这个。 绝对没有区别。 ActivePresentation.Slides(19).Shapes(2).Chart.ChartTitle.Characters.Font.Color = vbGreen具有完全相同的结果:1。如果选择了图表标题,它只有效。它只会选择其他内容。 span> @DavidZemens:只有在选择标题时才有效,这不是问题,因为无论如何我都在处理选择。但是,问题是一旦选择移动到另一个对象,更改就会被撤消。 【参考方案1】:

根据您提供的信息,我在 PowerPoint 中构建了直方图和瀑布图并成功使用:

Sub ChartTitleFontColor()
  Dim oShp As Shape
  Dim oCht As Chart

  'Waterfall on slide 1
  Set oShp = ActivePresentation.Slides(1).Shapes(1)
  If oShp.HasChart Then
    Set oCht = oShp.Chart
  End If

  ' Do stuff with your chart
  If oCht.HasTitle Then
    Debug.Print oCht.ChartTitle.Text
    oCht.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(251, 5, 40)
  End If

  'Histogram on slide 2
  Set oShp = ActivePresentation.Slides(2).Shapes(1)
  If oShp.HasChart Then
    Set oCht = oShp.Chart
  End If

  ' Do stuff with your chart
  If oCht.HasTitle Then Debug.Print oCht.ChartTitle.Text
    oCht.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(251, 5, 40)
  End If

  ' Clean up
  Set oShp = Nothing
  Set oCht = Nothing
End Sub

【讨论】:

感谢您的努力,但是: 1. 我正在使用 PowerPoint。 2. 它不适用于瀑布图 3. 对于它适用的图表,它不仅会更改图表标题,还会更改轴标题等。 我可以把我创建的文件发给你。宏仅更改标题颜色,编辑数据或其他项目不会导致标题颜色变回。 据我所知,您使用的是 PowerPoint 2010,据我所知,此版本没有原生瀑布图类型。所以,它对你有用,因为你使用的是一个看起来像瀑布图的普通条形图。我认为瀑布图作为图表类型仅在 PP2016 中可用【参考方案2】:

您的代码在我的测试中有效。我在 PowerPoint 2016 中创建了两个图表,第一个是瀑布图,第二个是另一种类型。以下代码仅更改标题颜色(文本只是其被更改的证明),没有其他内容。我可以选择另一个图表并且没有任何变化。我在搜索中找不到关于此的错误。也许剩余代码中的某些内容正在将其改回?

Sub test()
    Dim myPresentation As Presentation
    Set myPresentation = ActivePresentation

    Dim myShape As Shape
    Set myShape = myPresentation.Slides(1).Shapes(1)

    Dim theChart As Chart
    If myShape.HasChart Then
        Set theChart = myShape.Chart

        If theChart.ChartTitle.Text = "This is blue" Then
            theChart.ChartTitle.Text = "This is yellow"
            theChart.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 255, 0)
        Else
            theChart.ChartTitle.Text = "This is blue"
            theChart.ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 255, 255)
        End If
    End If
End Sub

【讨论】:

您是否使用 PowerPoint 2016 订阅或不订阅 365? @DanielHilgarth 订阅了 365。 @DanielHilgarth “肯定没有代码可以将它改回来”?我不明白。我的代码示例将其从蓝色改回黄色, @ForEachLoop Daniel 的评论是对您的警告的回应:也许剩余代码中的某些内容将其改回?。他保证没有其他代码将其改回,正如您所说的那样,这可能是罪魁祸首。 @ForEachLoop David 是对的,这就是我的意思。我也在使用 Office 365。你有哪个版本号?【参考方案3】:

这并不完全是一个答案,但我认为你应该为你的对象命名。 而不是使用

ActivePresentation.Slides(1).Shapes(1)

您可以命名对象。

【讨论】:

以上是关于更改 PowerPoint 直方图图表中图表标题的文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

vbscript 更改PowerPoint图表中散点图上所有点的颜色

在 powerpoint 中编辑图表数据

将 Excel 图表粘贴到 PowerPoint 幻灯片中

vbscript [在PowerPoint中调整图表大小]另一个在PowerPoint #PowerPoint中调整图表大小的示例

使用 VBA 将 Excel 图表粘贴到 Powerpoint 中

使用 Python 将图表从 Excel 转换为 PowerPoint