将特殊符号从一个PowerPoint演示文稿复制到另一个

时间:2010-01-11 16:01:19

标签: vba vsto powerpoint openxml powerpoint-vba

我需要将文本从一个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不起作用。

1 个答案:

答案 0 :(得分:0)

这不能在VBA中完成。