Вставка символов в текст в PowerPoint 2007 с использованием VBA - PullRequest
1 голос
/ 26 октября 2010

Мне нужно программно добавить (VBA / VSTO) несколько специальных символов (например, смайликов) в текст в TextRange в PowerPoint 2007.

Я могу вставить символ, используя:

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

К сожалению, когда я пытаюсь вставить несколько символов один за другим с разными шрифтами, только последний отображается правильно, а предыдущие отображаются как пустые квадраты.

Как вставить несколько символов из разныхшрифты?Возможно, есть способ создать новый Run для каждого символа?

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

Каждый InsertSymbol стирает содержимое TextRange, по крайней мере, в моих тестах.

Однако я нашел способ без InsertSymbol. Повторите для каждого символа:

  • newRun.InsertAfter(character); // вставить символьный символ и создать новый Run
  • установить шрифт «Другое» на желаемый шрифт символа - важно использовать NameOther, а не Name, иначе специальные символы, такие как Copyright
  • исчезнет, ​​если они не присутствует в выбранном шрифте (например, Wingdings не имеет авторских прав символ)
  • newRun.get_Characters(newRun.get_Characters(-1, -1).Count, 1).Font.NameOther = symbolFontName;
1 голос
/ 27 октября 2010

Создать новый 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
0 голосов
/ 22 ноября 2010

Мне потребовалось много времени и усилий, чтобы решить эту проблему.Тогда я побеспокоился и выложил решение.

Кто-то занят "отстранением" моих вопросов / ответов, не заботясь о сложности и решениях.

...