PowerPoint演示文稿中的替换字体问题

时间:2019-08-22 23:47:06

标签: replace fonts powerpoint powerpoint-vba

我无法更改(即“替换”)我继承的演示文稿中使用的两种字体,这些字体给我们的用户带来了麻烦。

我已将演示文稿设置为嵌入字体,但是由于我没有问题,我无法像平常那样修复它(即,通常要使用问题字体并打开文件然后再次关闭它嵌入字体,就没有其他问题了。)

在这种情况下,有问题的字体称为“ Times”(不是“ Times New Roman”,只是“ Times”),我相信这是一种古老的PostScript字体,如果我没记错的话,这将是一个问题因为据我了解,PowerPoint不支持PostScript字体。

无论如何,我想用“ Arial”替换字体,我知道通常可以通过Replace> Replace Font轻松实现。 。 。但是,由于某种原因,该文件并没有使用。我将告诉PowerPoint替换它,它似乎已执行某些操作,然后单击。 。 。没有变化。

SO。 。 。我前往Google,尝试了一些方法(PPTools可能提到的一个方法是将文件转换为HTML,然后再转换为HTML,据说可以修复(即“删除”)演示文稿中的某些亚洲字体和其他不受支持的字体。但是我无法无法弄清楚如何在O365脱机版(PowerPoint 2019)中将演示文稿另存为网页,这是行不通的(似乎找不到``另存为''或``导出''HTML或Web的选项Page,按照建议,因此我开始寻找VBA。

我的第一次尝试是这样,因为我发现它最初是用来将“远东字体”更改为“ Arial”的:

Sub ChgFarEastFontsToArial()
    Dim oSh As Shape
    Dim oSl As Slide

    For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes
            If oSh.HasTextFrame Then
                oSh.TextFrame.TextRange.Font.NameFarEast = "Arial"
            End If
        Next
    Next

    For Each oSh In ActivePresentation.SlideMaster.Shapes
        If oSh.HasTextFrame Then
            oSh.TextFrame.TextRange.Font.NameFarEast = "Arial"
        End If
    Next

    If ActivePresentation.HasTitleMaster Then
        For Each oSh In ActivePresentation.TitleMaster.Shapes
            If oSh.HasTextFrame Then
                oSh.TextFrame.TextRange.Font.NameFarEast = "Arial"
            End If
        Next
    End If

End Sub

当我不进行任何更改时,它运行没有错误,但是由于我实际上并不想更改远东字体,因此它对我没有帮助。

我的下一个尝试是这样

Sub ReplaceFontToArial()
  Dim objSingleWord As Range
  Dim objDoc As Presentation

  Set objDoc = ActivePresentation

  With objDoc
    For Each objSingleWord In .Words
      If objSingleWord.Font.Name = "Times" Then 
        objSingleWord.Font.Name = "Arial"
      End If
    Next
  End With
End Sub

但是,它会错误地突出显示ObjSingleWord As Range和声明Compile error: User-defined type not defined

然后,根据Microsoft VBA参考文档的建议,我尝试了:

Sub ReplaceFontToArial()
  With Application.ActivePresentation
    .Fonts.Replace Original:="Times", Replacement:="Arial"
  End With
End Sub

但是错误出现在Run-time error '424': Object required上。

我正要解决这个问题。关于如何更改这种疯狂字体的任何想法都将是惊人的! (此外,关于我的上述脚本为何不起作用的建议也将有所帮助。)


仅供参考,如果有帮助,将不会替换的字体为:

Times Unsupported font file format (AAT),Times Bold Unsupported font file format (AAT),Times Italic Unsupported font file format (AAT),Times Bold Italic Unsupported font file format (AAT)和Noto Sans Symbols。

1 个答案:

答案 0 :(得分:2)

Times是Mac字体(AAT是Apple Advanced Typography)。对于顽固的字体,我的首选技术是将文件结尾更改为.zip,将文件解压缩为OOXML,然后使用文本编辑器(如NotePad ++)对所有文件进行查找和替换。

查找:typeface =“ Times” 替换:typeface =“ Arial”

然后重新压缩并重新命名为.pptx。制作该文件的副本以进行实验。此方法在更改PowerPoint语言设置时也非常有用。