将PPT字体设置为' Body'类型

时间:2017-07-19 19:35:30

标签: vba fonts powerpoint powerpoint-vba powerpoint-2013

我无法粘贴我的全部代码,但关键是我在PPT 2013中有一个文本框, myTb ,我已经(以编程方式)粘贴了一些文本。我现在想要执行以下两个操作:

  1. 查看原始文字是否为PPT'正文默认'字体(例如' Calibri(正文)' Calibri'在MS功能区中)
  2. 如果是正文默认值,请将新文本设置为正文默认值。
  3. 即使我已经尝试过对大多数 Shape.TextFrame [n] .TextRange.Font.Name ......进行读/写操作,但我似乎无法解决这个问题。 / strong>字段。关于 Shape.TextFrame.TextRange.Font.NameComplexScript 字段,我还有两个令人困惑的问题:

    1. 此字段似乎并不完整' body-default与非body-default字体的指示符。原因是,如果此文本框最初是正文默认值(' Calibri(正文)'),它将读取' + mn-cs',但之后我可以更改字体对于非默认变体(' Calibri'),它仍然显示为' + mn-cs'。
    2. 然后我继续将文本框更改为完全不同的字体,该字段会根据预期将此字段更改为字体的名称。但是,如果我然后更改回正文默认字体(或其他任何字体),则此字段仍保留在上一个字体的名称上。

2 个答案:

答案 0 :(得分:0)

要将字体设置为正文或标题字体,您需要使用奇怪的语法:

{object} .Font.Name =" +" + FontType +" - " + FontLang

其中:

FontType是" mj"或" mn"主要(标题)或次要(主体)分别。

FontLang是" lt"," cs"或" ea"适用于拉丁语,复杂脚本或东亚语

例如,将字体设置为拉丁文本的主题正文文本字体:

ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Font.Name = "+mn-lt"

答案 1 :(得分:0)

聚会有点晚了,但我找到了这个以防万一有人需要它。

编辑:这是 C# 代码,使用 Interop PowerPoint 命名空间。

string headingsThemeFont = Globals.ThisAddIn.Application.ActivePresentation.SlideMaster.Theme.ThemeFontScheme.MajorFont.Item(MsoFontLanguageIndex.msoThemeLatin).Name;
                   
string bodyThemeFont = Globals.ThisAddIn.Application.ActivePresentation.SlideMaster.Theme.ThemeFontScheme.MinorFont.Item(MsoFontLanguageIndex.msoThemeLatin).Name;