2009-10-13 66 views
3

有谁知道如何使用VBA检测Powerpoint 2007幻灯片对象中主题字体的使用情况?如果查看Shape.TextFrame.TextRange.Font.Name,字体名称是否显示为简单名称(例如:“Arial”),而不管字体是否被指定为固定名称或主题名称(可随文档主题更改)。在对象模型中,我没有看到任何其他属性将该名称标记为与主题绑定(例如颜色为ObjectThemeColor)。如何检测Powerpoint 2007 VBA中的主题字体?

谢谢!

回答

1

没有直接的方法(即我所知道的),但是你可以用IF /然后检查:

Sub checkthemeFont() 
    Dim s As Shape 
    Set s = ActivePresentation.Slides(1).Shapes(1) 
    Dim f As Font 
    Set f = s.TextFrame.TextRange.Font 

    Dim themeFonts As themeFonts 
    Dim majorFont As ThemeFont 

    Set themeFonts = ActivePresentation.SlideMaster.Theme.ThemeFontScheme.MajorFont 
    Set majorFont = themeFonts(msoThemeLatin) 

    If f.Name = majorFont Then 
     Debug.Print f.Name 
    End If 
End Sub 
+0

感谢宅男的答复,但我认为这只是告诉你该字体名称是否匹配主题名称,而不是此形状的字体是否由主题设置控制。您可以在GUI中通过选择文本,右键单击并在“主题字体”部分(主题标题和正文字体)中选择顶部2种字体之一来查看。然后添加另一个形状,但从下面的列表中选择相同的字体名称(“所有字体”部分)。两个对象的字体名称都是相同的。改变主题,你会看到第一个形状的字体改变,但不是第二个。 – 2009-10-14 13:47:01

+0

Gotcha。是的,这是一个艰难的。我唯一能找到的是与你需要的东西相反的东西,那就是如何设置主题字体(http://pptfaq.com/FAQ00957.htm)。从对象中获取它们作为对象的属性似乎没有任何文档。 – 2009-10-14 16:42:19

+0

是的,我发现太多,但我从来没有能够赶上字体的名字,如“+ MJ-IT”为史蒂夫在文章中提到,只是普通的香草的字体名称... – 2009-10-14 17:27:49

相关问题