Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将PPT字体设置为';车身';类型_Vba_Fonts_Powerpoint_Powerpoint 2013 - Fatal编程技术网

Vba 将PPT字体设置为';车身';类型

Vba 将PPT字体设置为';车身';类型,vba,fonts,powerpoint,powerpoint-2013,Vba,Fonts,Powerpoint,Powerpoint 2013,我无法粘贴全部代码,但关键是我在PPT 2013中有一个文本框,myTb,我已经(以编程方式)粘贴了一些文本。我现在要执行以下两个操作: 查看原始文本是否为PPT“body default”字体(例如MS功能区中的“Calibri(body)”与“Calibri”) 如果是正文默认值,则将新文本也设置为正文默认值 我似乎无法理解这两个部分,即使我已经尝试了从/到大多数Shape.TextFrame[n].TextRange.Font.Name…字段的读/写操作。关于Shape.TextFrame

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

  • 查看原始文本是否为PPT“body default”字体(例如MS功能区中的“Calibri(body)”与“Calibri”)
  • 如果是正文默认值,则将新文本也设置为正文默认值
  • 我似乎无法理解这两个部分,即使我已经尝试了从/到大多数Shape.TextFrame[n].TextRange.Font.Name…字段的读/写操作。关于Shape.TextFrame.TextRange.Font.NameComplexScript字段,我还要问两个令人困惑的问题:

  • 此字段似乎不是正文默认字体与非正文默认字体的“完整”指示器。原因是,如果此文本框最初是正文默认值(“Calibri(body)”,它将读取“+mn cs”,但我可以将字体更改为非默认变量(“Calibri”),它仍然读取“+mn cs”
  • 然后,我继续将文本框更改为一种完全不同的字体,这会按预期将此字段更改为字体名称。但是,如果我随后更改回body默认字体(或任何其他字体),此字段将保留在前一个字体的名称上

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

    {object}.Font.Name=“+”+FontType+“-”+FontLang

    其中:

    FontType是“mj”或“mn”,分别表示大调(标题)或小调(正文)

    FontLang是“lt”、“cs”或“ea”,表示拉丁语、复杂文字或东亚语

    例如,要将字体设置为主题的正文字体,请执行以下操作:

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

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

    {object}.Font.Name=“+”+FontType+“-”+FontLang

    其中:

    FontType是“mj”或“mn”,分别表示大调(标题)或小调(正文)

    FontLang是“lt”、“cs”或“ea”,表示拉丁语、复杂文字或东亚语

    例如,要将字体设置为主题的正文字体,请执行以下操作:

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

    晚会有点晚了,但我发现了这个,以防有人需要

    编辑:这是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;
                        
    

    晚会有点晚了,但我发现了这个,以防有人需要

    编辑:这是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;
                        
    

    但是这个Font.Name字符串如何确定“Calibri”和“Calibri(body)”之间的区别?正如我上面所描述的,这两种字体类型在这个字符串中都显示为“mn”,尽管它们彼此明显不同。我认为我们需要更详细地描述您在原始帖子中描述的更改。通过代码或手动或任何一种方式,具体如何?我知道这是旧的,但上面的工作为我。我想将字体设置为Georgia,这是我选择的PowerPoint主题。如果我做了Font.Name=“Georgia”,那么它会将此硬编码为字体。但是,使用上面的设置,将其设置为所需的正文字体。Thanks@Dean我参加聚会也迟到了。但如果有帮助的话,PPT有一些主题,包括字体、颜色和其他一些方面的规格。您可以将这些视为查找表。指定主题字体(即标题或正文)告诉PPT“转到字体主题表,查找正文字体的名称,使用该字体”。当您更改字体主题时,任何被指定为正文或标题主题字体的字体都将相应更改。当您告诉PPT“将此文本变为佐治亚”时,字体不再连接到主题,即使主题发生变化,字体仍保持佐治亚。每个都有它的用途。这个Font.Name字符串如何确定“Calibri”和“Calibri(body)”之间的区别?正如我上面所描述的,这两种字体类型在这个字符串中都显示为“mn”,尽管它们彼此明显不同。我认为我们需要更详细地描述您在原始帖子中描述的更改。通过代码或手动或任何一种方式,具体如何?我知道这是旧的,但上面的工作为我。我想将字体设置为Georgia,这是我选择的PowerPoint主题。如果我做了Font.Name=“Georgia”,那么它会将此硬编码为字体。但是,使用上面的设置,将其设置为所需的正文字体。Thanks@Dean我参加聚会也迟到了。但如果有帮助的话,PPT有一些主题,包括字体、颜色和其他一些方面的规格。您可以将这些视为查找表。指定主题字体(即标题或正文)告诉PPT“转到字体主题表,查找正文字体的名称,使用该字体”。当您更改字体主题时,任何被指定为正文或标题主题字体的字体都将相应更改。当您告诉PPT“将此文本变为佐治亚”时,字体不再连接到主题,即使主题发生变化,字体仍保持佐治亚。每个都有它的用途。由于此线程标记为“VBA”,您的答案并不完全合适,但它无疑对希望在(我猜)VBA.NET中解决问题的人有用。请编辑您的评论,指出这是{whatever.language}的解决方案。您是对的,史蒂夫,谢谢您指出这一点。我已经编辑了我的答案。由于此线程标记为“VBA”,您的答案并不完全合适,但它无疑对希望在(我猜)VBA.NET中解决问题的人有用。请编辑您的评论,指出这是{whatever.language}的解决方案。您是对的,史蒂夫,谢谢您指出这一点。我已经编辑了我的答案。