我有一个图表系列使用一种颜色(它可以是一个msoThemeColorAccent<#>或任何其他)作为标记线,另一种颜色作为标记填充(它可以是msoThemeColorAccent<#>,更轻的x%,或任何其他),没有线.我想确定图表系列是否使用a msoThemeColorAccent<#>作为标记线,a msoThemeColorAccent<#>,较轻的x%,用于标记填充,如果是,则在每种情况下使用哪种特定的强调颜色.
我尝试返回一系列的一些属性,没有运气.在执行Sub的过程中的断点处,该Sub具有sr对图表系列的引用(为了测试目的,设置为具有线条,其颜色与标记线和标记填充相同,设置为Accent1),并且在With sr施工,我在即时窗口测试:
? .Format.Line.BackColor.ObjectThemeColor, .Format.Line.ForeColor.ObjectThemeColor
0 0
? .Format.Fill.BackColor.ObjectThemeColor, .Format.Fill.ForeColor.ObjectThemeColor
0 -2
Run Code Online (Sandbox Code Playgroud)
我期望以某种方式获得msoThemeColorAccent1(= 5)的值,这在我的系列中使用.有没有办法做到这一点?
我发现的所有示例都msoThemeColorIndex用于设置颜色,没有用作读取的值.
PS:我在第一部分没有成功,系列颜色均匀.我预见如果我克服了这个障碍,我可能仍然会在检测到TintAndShade没有线,不同标记填充与标记线的目标情况下的正确或甚至强调颜色方面存在问题.
我正在尝试(主要是成功地)从活动中"读取"颜色ThemeColorScheme.
下面的子程序将从主题中获得12种颜色,例如myAccent1:

我还需要从调色板中获得另外4种颜色.我需要的四种颜色是紧接在上面指示的颜色之下的颜色,然后是从左到右的接下来的3种颜色.
因为ThemeColorScheme对象只包含12个项目The specified value is out of range,所以如果我尝试以myAccent9这种方式分配值,则会出现错误.我理解这个错误及其发生的原因.我不知道的是如何从调色板访问其他40多种颜色,这些颜色不是ThemeColorScheme对象的一部分?
Private Sub ColorOverride()
Dim pres As Presentation
Dim thm As OfficeTheme
Dim themeColor As themeColor
Dim schemeColors As ThemeColorScheme
Set pres = ActivePresentation
Set schemeColors = pres.Designs(1).SlideMaster.Theme.ThemeColorScheme
myDark1 = schemeColors(1).RGB 'msoThemeColorDark1
myLight1 = schemeColors(2).RGB 'msoThemeColorLight
myDark2 = schemeColors(3).RGB 'msoThemeColorDark2
myLight2 = schemeColors(4).RGB 'msoThemeColorLight2
myAccent1 = schemeColors(5).RGB 'msoThemeColorAccent1
myAccent2 = schemeColors(6).RGB 'msoThemeColorAccent2
myAccent3 = schemeColors(7).RGB 'msoThemeColorAccent3
myAccent4 = schemeColors(8).RGB …Run Code Online (Sandbox Code Playgroud)