我需要将文本从一个PowerPoint演示文稿复制到另一个PowerPoint演示文稿。但是,我在复制特殊符号(例如表情符号)时遇到问题,这些符号在目标演示文稿中显示为空框。查看原始演示文稿中的Open XML文件,我可以看到包含笑脸的Run
具有“SymbolFont”属性:
<a:sym typeface="Wingdings" />
但是,在VBA中,Shape.TextFrame2.TextRange2.Font
= Run
的字体 - 显示Arial。
如何使用VBA或C#(非XML)确定文本Run
的SymbolFont?
然后我可以在目标演示文稿中指定SymbolFont。
也许有其他方法可以复制不涉及XML的文本?
请注意,此问题不仅发生在Smileys上;其他特殊字符可能会显示不同的SymbolFonts,例如:
<a:symTypeface = "Symbol", PitchFamily = 18, CharacterSet = 2>
代码示例:
getRuns(TextRange2 paragraph)
{
foreach(TextRange2 run in paragraph.get_Runs(-1,-1))
_myRuns.Add(new MyRun {_text=run.Text, _font=run.Font} );
}
copyRunsToParagraph(TextRange2 paragraph)
{
foreach(MyRun run in _myRuns)
paragraph=paragraph.InsertAfter(run._text);
}
注意:Run.Font
似乎只返回拉丁字体,而不是符号字体,例如Arial而不是Wingdings。正如我所写,不同的符号可能有不同的SymbolFonts,所以总是使用Wingdings不起作用。
答案 0 :(得分:0)
这不能在VBA中完成。