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

7

我想改变 PowerPoint 中柱状图标题的文本颜色。
以下是我的操作步骤:

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

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

在这些情况下,设置ObjectThemeColor会将文本设置为黑色。设置RGB实际上可以设置正确的颜色。不过,在这两种情况下,只要用户更改选择,文本颜色就会跳回到先前的颜色。

我该如何设置其中一个图表标题的文本颜色?
我正在使用VSTO和C#,但只要能够将其转换为C#并且仍然有效,VBA解决方案也同样受欢迎。


@joeschwa:即使我不是从选择中识别图表,结果也是一样的。我不知道为什么你能用 - 也许你使用的是任何情况下都有效的图表类型? - Daniel Hilgarth
我正在使用PowerPoint 2016中的直方图图表类型。在分配RGB值时,您是否使用系统定义的颜色?(例如colorFormat.RGB = Color.DarkOliveGreen.ToArgb())这可能是VSTO所需的。 - joeschwa
不,我只是在使用数字。通常情况下这样做是没问题的。此外,主题颜色也有同样的问题。如果您有一个包含VBA演示的演示文稿,并且可以展示它是如何正常工作的,是否能够上传给我,这样我就可以看看它是否适用于我?我正在使用Office 365 - 这是与Office 2016一样的Office 16版本 - 但两者之间可能存在差异。 - Daniel Hilgarth
1
它没有任何区别。ActivePresentation.Slides(19).Shapes(2).Chart.ChartTitle.Characters.Font.Color = vbGreen的结果完全相同:1. 它仅在选择图表标题时起作用 2. 一旦选择其他内容,它就会恢复原状。 - Daniel Hilgarth
1
@DavidZemens:问题不在于只有选择标题才能工作,因为我无论如何都是按照选择来工作的。然而,问题在于一旦选择移动到另一个对象,更改就会被撤销。 - Daniel Hilgarth
显示剩余7条评论
3个回答

0

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

ActivePresentation.Slides(1).Shapes(1)

您可以为该对象命名。 在此输入图像描述


0
根据您提供的信息,我在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

enter image description here


感谢您的努力,但是:1.我正在使用PowerPoint。2.对于瀑布图,它无法正常工作。3.对于它能够正常工作的图表,它不仅更改图表标题,而且还更改轴标题等。 - Daniel Hilgarth
我可以把我创建的文件发送给你。宏仅更改标题颜色,编辑数据或其他项目不会导致标题颜色恢复。 - sunsetsurf
1
据我所知,您正在使用PowerPoint 2010,而这个版本似乎没有本地的瀑布图表类型。因此,它能够正常工作,是因为您使用了普通的条形图,并将其外观变得像瀑布图表。我认为,瀑布图表作为一种图表类型,只在PP2016中可用。 - Daniel Hilgarth

0

你的代码在我的测试中有效。我在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

你是使用带有365订阅的PowerPoint 2016还是没有订阅的? - Daniel Hilgarth
@DanielHilgarth 需要使用 365 订阅。 - ForEachLoop
@DanielHilgarth “绝对没有代码可以将其改回”?我不明白。我的代码示例将其从蓝色改回黄色, - ForEachLoop
1
@ForEachLoop 丹尼尔的评论是针对你的警告而发表的:“也许剩下的代码中有什么在将其改回去?”他保证没有其他代码会将其改回去,正如你所暗示的可能是罪魁祸首。 - David Zemens
@ForEachLoop David是正确的,那就是我想说的。我也在使用Office 365。你用的是哪个版本号? - Daniel Hilgarth
@DanielHilgarth。1803/9126.2098。 - ForEachLoop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接