首页 > 解决方案 > PowerPoint VBA - 主题颜色公​​式

问题描述

我想模仿 PowerPoint 如何在使用 6 种强调色后自动选择颜色。

在 vba 中,您可以像这样设置 6 种主题颜色:

.ThemeColorScheme(msoThemeAccent1) = RGB(255, 0, 0)
.ThemeColorScheme(msoThemeAccent2) = RGB(0, 255, 0)
.ThemeColorScheme(msoThemeAccent3) = RGB(0, 255, 255)
.ThemeColorScheme(msoThemeAccent4) = RGB(255, 255, 0)
.ThemeColorScheme(msoThemeAccent5) = RGB(23, 255, 10)
.ThemeColorScheme(msoThemeAccent6) = RGB(23, 255, 100)

主题颜色在这里手动设置:

假设我与 15 系列聊天,powerpoint 将使用前 6 种帐户颜色,但随后它会根据前 6 种强调色自动选择稍亮或稍暗的 rgb。我想要这个公式,所以我可以根据自己的喜好调整它。这个论坛在任何地方都可用吗?

标签: vbapowerpoint

解决方案


颜色转换算法从未发表过,但它们很容易推断:

  1. 根据需要创建包含尽可能多的数据系列的示例图表。
  2. 保存文件,将结尾更改为 .zip 并解压缩。
  3. 看ppt/charts/chart1.xml

Office 程序不直接转换 RGB 值。相反,他们应用过滤器。这是前 6 个系列的典型颜色填充:

<a:solidFill>
    <a:schemeClr val="accent1"/>
</a:solidFill>

第二组6人:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="60000"/>
    </a:schemeClr>
</a:solidFill>

第三组:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="80000"/>
        <a:lumOff val="20000"/>
    </a:schemeClr>
</a:solidFill>

第四组:

    <a:schemeClr val="accent1">
        <a:lumMod val="80000"/>
    </a:schemeClr>
</a:solidFill>

第五组:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="60000"/>
        <a:lumOff val="40000"/>
    </a:schemeClr>
</a:solidFill>

第六组:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="50000"/>
    </a:schemeClr>
</a:solidFill>

不幸的是,VBA 中没有办法直接应用 lumMod 或 lumOff。相反,您需要应用.PictureEffects参数,然后找出哪个 PictureEffect 代码创建了必要的视觉效果。msoEffectBrightnessContrastmsoEffectSaturation将能够通过一些实验设置相同的颜色值。这里是微软对图片效果的枚举:MsoPictureEffectType enumeration (Office)


推荐阅读