使用VBA在PowerPoint 2007中将符号插入文本

时间:2010-10-26 16:27:23

标签: vba vsto powerpoint

我需要以编程方式(VBA / VSTO)将几个特殊符号(例如,表情符号)附加到PowerPoint 2007中的TextRange中的文本中。

我可以使用以下方法插入符号:

With ActiveWindow.Selection.TextRange
    .Text = "sometext"
    Call .Characters(.Characters.Count + 1).InsertSymbol("Arial", 65, MsoTriState.msoTrue)
End With

不幸的是,当我尝试使用不同的字体一个接一个地插入几个符号时,只有最后一个符号显示正确而前一个符号显示为空方块。

如何从不同的字体插入多个符号?也许有办法为每个符号创建一个新的Run

3 个答案:

答案 0 :(得分:2)

每个InsertSymbol都会删除TextRange的内容,至少在我的测试中。

然而,我找到了一种没有InsertSymbol的方法。对每个符号重复:

  • newRun.InsertAfter(character); // 插入符号字符,并创建一个 新Run
  • 将“其他”字体设置为所需的字体 符号字体 - 重要的使用 NameOther而不是Name,否则 特殊符号,如版权
  • 如果不是,
  • 就会消失 存在于所选字体中(例如, Wingdings没有版权 符号)
  • newRun.get_Characters(newRun.get_Characters(-1, -1).Count, 1).Font.NameOther = symbolFontName;

答案 1 :(得分:1)

为每个TextRange创建一个新的.InsertSymbol对象。

Dim tr1 As TextRange
Set tr1 = ActiveWindow.Selection.TextRange
tr1.InsertSymbol "Wingdings", 81
Dim tr2 As TextRange
Set tr2 = ActiveWindow.Selection.TextRange
tr2.InsertSymbol "Wingdings 2", 81

答案 2 :(得分:0)

我花了很多时间和精力来解决这个问题。然后我烦恼并发布了解决方案。

有人忙于“投票”我的问题/答案,而无需理解复杂性和解决方案。